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'。 –