null
mysql存在NULL不能用=和<>这两个函数,而是要用is NULL
比如有这两个表;
t1
t2
带ID 比较这两个表的区别,无法使用 <> 进行比较。
解决方案
需要有一个唯一的字段:id,而且正常开发肯定id是唯一的
用group by + union all进行。
比如有id, 和可能为空的abc三个字段,比较不同的数据的sql为:
select * from
(select *, 't1' as t from t1
union all
select * , 't2' as t from t2) tt2
group by id, a,b,c
having count(*)=1
order by tt2.id;
————————————————————————————————————
细节:
-
必须用union all而不能用union。
union会对查出的数据进行去重,而ONION性能非常弱。 -
分组要用所有要比较的字段,比如说上表要比对abc三个数据,就要group by a,b,c不然的话比较不出来。
-
mysql的GROUP BY 算法和mysql不一致,但是逻辑是一致的。