epe*_*leg 8 mysql sql null resultset
相比
SELECT distinct u_id,timestamp as time
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
和
SELECT distinct u_id,max(timestamp) as time
FROM my_table;
Run Code Online (Sandbox Code Playgroud)
当我的表根本没有行时(或者如果我添加一个不匹配任何行的where子句):
前者返回一个空结果集(这是我所期望的),而后者返回一个空行作为其两个字段的值的行.
有人可以向我解释为什么第二个就像它那样行事?
evi*_*one 17
MySQL文档说
如果没有匹配的行,则MAX()返回NULL.
如果您没有数据,那么它只返回两个值为NULL.
如果您希望第二个查询也返回空结果集,那么您必须过滤掉NULL值,例如使用可以与聚合函数一起使用的HAVING子句:
SELECT DISTINCT u_id, MAX(timestamp) as time FROM my_table GROUP BY u_id HAVING time IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4665 次 |
| 最近记录: |