比较
SELECT distinct u_id,timestamp as time
FROM my_table;
和
SELECT distinct u_id,max(timestamp) as time
FROM my_table;
当我的表根本没有行时(或者如果我添加了一个不匹配任何行的 where 子句):
前者返回一个空结果集(这是我所期望的) 而后者返回单个行,该行的两个字段的值为 null。
有人可以向我解释为什么第二个会这样吗?
最佳答案
MySQL 文档说
MAX() returns NULL if there were no matching rows.
如果您没有数据,那么它只会将两个值都返回为 NULL。
如果您希望第二个查询也返回空结果集,那么您必须过滤掉 NULL 值,例如使用可以与聚合函数一起使用的 HAVING 子句:
SELECT DISTINCT u_id, MAX(timestamp) as time FROM my_table GROUP BY u_id HAVING time IS NOT NULL;
关于mysql - 为什么此查询返回空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545766/