次のクエリがあります。
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
を持つ行のみを返すにはどうすればよい'no'
ですか?
条件を追加しWHERE
ます。where 句で を使用することはできませんALIAS
。
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
WHERE IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') = 'no'
またはサブクエリを使用する
SELECT *
FROM
(
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
) s
WHERE Expired = 'no'
私はあなたがこのようなことをすることができると信じています
SELECT IF( TIMESTAMPDIFF(
HOUR,
users_codes.timestam,
CURRENT_TIMESTAMP()
) < 48, 'no', 'yes') AS Expired
FROM users_codes
HAVING Expired = 'no';