3
我有以下查詢:如何在使用MySQL的別名列上選擇使用WHERE條件?
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
我怎麼只返回有'no'
行?
我有以下查詢:如何在使用MySQL的別名列上選擇使用WHERE條件?
SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes
我怎麼只返回有'no'
行?
添加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';
好這個工作,但在'只有mysql'。因爲如果沒有'GROUP BY'子句,你不能使用'HAVING'。 –