2013-02-11 93 views
0

我想要一個查詢來返回不存在於另一個表中的值。我目前運行兩個查詢並在代碼中進行交集。我堅持的語法,多列和語句的存在之後where涉及多列的子查詢

首先查詢:

SELECT sid, cid 
FROM Table2 
where used = 0 
group by sid, cid 

主查詢:

SELECT sid, cid, count(1) as cnt 
FROM  Table1 
WHERE  ##not any pair of (sid, cid) returned from first query## 
GROUP BY sid, cid 
HAVING cnt < 20 
LIMIT  50 

什麼是完整的主查詢?

+0

當你說*沒有任何*'SID,cid',你的意思是兩個或以下任何SID或CID的? – 2013-02-11 11:56:28

+0

@JW,修正了歧義 – aitchnyu 2013-02-11 12:20:08

回答

0

嘗試:

SELECT t1.sid, t1.cid, count(1) as cnt 
FROM  Table1 t1 
LEFT JOIN Table2 t2 
ON  t1.sid = t2.sid AND t1.cid = t2.cid AND t2.used = 0 
WHERE  t2.sid IS NULL AND t2.cid IS NULL 
GROUP BY sid, cid 
HAVING cnt < 20 
LIMIT  50 
+0

' WHERE t2.sid IS NULL'或'WHERE t2.cid IS NULL'就足夠了,因爲您已經在'ON'子句中使用了AND。 – 2013-02-11 12:22:28