我在用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交表易犯错误

解决方案 »

  1.   

    第1种是错误的a.uid=b.uid AND b.uid IS NULL没有满足条件的记录,NULL不等于任何数,包括
    NULL
      

  2.   

    mysql下不能用full outer join
      

  3.   


    但是我用 a.uid=b.uid AND b.uid<1 也是这样啊
      

  4.   

    mysql里面据我理解
    left join ..on
    on后面的条件判断全部是针对left join的表
    而不会对from的表做判断
    where才会对from的表做判断
    你这两个语句不是同一个意思啊
    第一个肯定不是你要的结果,第二个菜式。