我在用MySQL的LEFT JOIN ON的时候惊人的发现原来自己原先一直用的这种全都错误了!
两个表a(uid,nick),b(uid)。然后要取出b表中没有但是a表中有的数据。-- [1] 以前一直喜欢用这一种
SELECT a.uid FROM a LEFT JOIN b ON a.uid=b.uid AND b.uid IS NULL
WHERE 1 -- [2]
SELECT a.uid FROM a LEFT JOIN b ON a.uid=b.uid
WHERE b.uid IS NULL 今天测试才发现[1]中的根本就无法取到正确的结果。原来以前的用法全都是错误的。
分享一下给大家,值得注意的问题。网上还有很多这样的解说,都是用的第一种错误的。
LEFT JOINMySQL交表易犯错误
两个表a(uid,nick),b(uid)。然后要取出b表中没有但是a表中有的数据。-- [1] 以前一直喜欢用这一种
SELECT a.uid FROM a LEFT JOIN b ON a.uid=b.uid AND b.uid IS NULL
WHERE 1 -- [2]
SELECT a.uid FROM a LEFT JOIN b ON a.uid=b.uid
WHERE b.uid IS NULL 今天测试才发现[1]中的根本就无法取到正确的结果。原来以前的用法全都是错误的。
分享一下给大家,值得注意的问题。网上还有很多这样的解说,都是用的第一种错误的。
LEFT JOINMySQL交表易犯错误
解决方案 »
- 大侠帮忙,菜鸟求助~~~
- mysql中GPC和file_priv有什么作用?
- MYSQL报错!高手请进.......
- 如何获取多个bit型的值,高手指点
- postgresql dblink 能不能传复杂参数
- 两个数据库间怎么导数据?
- MySQL表数据超过1千万,数据表经常无缘无故损坏
- MYSQL 如何取得系统当前时间的前一天时间?达人请进。。。
- 请教诸位高手,如何在同台电脑的WIN2000下启动第2个mysql。
- postgreSQL的select * from tablename for update nowait问题
- mysql迁移到另一台服务器后,数据竟然不同,这是怎么回事?
- 【对比】EXPLAIN 是否可以取代 SELECT COUNT 来统计数据多少?
NULL
但是我用 a.uid=b.uid AND b.uid<1 也是这样啊
left join ..on
on后面的条件判断全部是针对left join的表
而不会对from的表做判断
where才会对from的表做判断
你这两个语句不是同一个意思啊
第一个肯定不是你要的结果,第二个菜式。