update_dataカラムはtimestamp型でINSERT INTOされるたびに自動で付与されます。
例えばこの様な形で格納されています。2021-08-11 09:11:09
これの最新の値を持つレコードを取得しようと思った場合、こちらのmax()でfetchするとシンタックスエラー等を吐き出さずに空の配列が出力されます。
php
1 $sql = "SELECT * FROM my_text 2 WHERE category_1 = ? AND category_2 = ? AND status = 1 AND update_date = (SELECT MAX(update_date) FROM my_text)";
一方で、他のやり方としてORDER BY ASC LIMIT 1
で指定するとupdate_dataカラムに正しく最新の日付を持つレコードが取得されます。
php
1 $sql = "SELECT * FROM my_text 2 WHERE category_1 = ? AND category_2 = ? AND status = 1 ORDER BY update_date ASC LIMIT 1";
max()でも最新日付を取得できると各種記事で確認はしているのですが、SQL文が誤っているのか、型をキャストしなくてはいけないのか、わからずご質問させていただきました。
よろしくお願い申し上げます。
追記:
命題が曖昧であったため、本文に追記させていただきます。以下の通りでございます。
「 WHERE category_1 = ? AND category_2 = ? AND status = 1」と言う条件を満たすものの中で、update_dateのカラムが最大(最新日付)のレコードを取得したい
回答3件
あなたの回答
tips
プレビュー