未用聚合函数时
select create_date FROM unlimited_user_history WHERE 1 != 1;
筛选结果为0件
但是用了聚合函数
select MAX(create_date) FROM unlimited_user_history WHERE 1 != 1;
即使where条件不满足,结果还是有1件;
这种情况怎么才能避免……
select create_date FROM unlimited_user_history WHERE 1 != 1;
筛选结果为0件
但是用了聚合函数
select MAX(create_date) FROM unlimited_user_history WHERE 1 != 1;
即使where条件不满足,结果还是有1件;
这种情况怎么才能避免……
解决方案
5
这是聚合函数的影响,你这样查询出来的结果应该是个Null。
假如你想避免,可以使用一个子查询
select * from (
select MAX(create_date) as create_date from unlimited_user_history where 1 != 2) a where dat is not null;
假如你想避免,可以使用一个子查询
select * from (
select MAX(create_date) as create_date from unlimited_user_history where 1 != 2) a where dat is not null;
10
select create_date FROM unlimited_user_history WHERE 1 != 1;
筛选结果为0件
但是用了聚合函数
select MAX(create_date) FROM unlimited_user_history WHERE 1 != 1;
即使where条件不满足,结果还是有1件;
这个很正常,第一个之所以返回0条,是原因是1!=1 是不成立的,所以就没有结果集了。
而第2个,也是一样,where过滤1!=1也是没有数据,但是聚合函数就算在1条记录也没有的情况下,也会返回1一个值,那就是null
筛选结果为0件
但是用了聚合函数
select MAX(create_date) FROM unlimited_user_history WHERE 1 != 1;
即使where条件不满足,结果还是有1件;
这个很正常,第一个之所以返回0条,是原因是1!=1 是不成立的,所以就没有结果集了。
而第2个,也是一样,where过滤1!=1也是没有数据,但是聚合函数就算在1条记录也没有的情况下,也会返回1一个值,那就是null
5
这里举个简单的例子,说明 聚合函数的特点:
mysql> select max(v) from (select 1 v) t where 1!=1; +--+ | max(v) | +--+ | NULL | +--+ 1 row in set (0.18 sec)