3

次のクエリがあります。

SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes

を持つ行のみを返すにはどうすればよい'no'ですか?

4

2 に答える 2

6

条件を追加し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'
于 2012-12-11T05:12:39.950 に答える
2

私はあなたがこのようなことをすることができると信じています

SELECT IF( TIMESTAMPDIFF(
    HOUR,
    users_codes.timestam,
    CURRENT_TIMESTAMP()
  ) < 48, 'no', 'yes') AS Expired

FROM users_codes
HAVING Expired = 'no';
于 2012-12-11T05:14:26.317 に答える