MySQL - 替换NOT IN中的LEFT JOIN

时间:2014-04-17 16:35:55

标签: mysql sql left-join notin

什么是正确的MySQL查询,在三个表之间有两个LEFT JOIN?

SELECT COUNT(1) FROM TABLE1 WHERE T1_ID NOT IN ( 
SELECT T2.T2_ID FROM TABLE2 T2 LEFT JOIN 
TABLE3 T3 ON T2.T2_ID=T3.T3_ID WHERE T3.T3_ID IS NULL )

这样的东西
SELECT COUNT(1) FROM TABLE1 T1 LEFT JOIN TABLE2 T2 ON T1.T1_ID=T2.T2_ID 
LEFT JOIN TABLE3 T3 ON T2.T2_ID=T3.T3_ID WHERE T2.T2_ID IS NULL AND 
T3.T3_ID IS NULL

1 个答案:

答案 0 :(得分:0)

为了表现,我会做类似

的事情
SELECT 
  COUNT(1) 
FROM 
  TABLE1 

  LEFT JOIN (
    SELECT 
      T2.T2_ID id
    FROM
      TABLE2 T2 

      LEFT JOIN TABLE3 T3 ON 
        T2.T2_ID=T3.T3_ID 
    WHERE 
      T3.T3_ID IS NULL
    ) t1 ON
    t1.id = table1.t1_id
WHERE
  t1 is null;