2013-02-11 4 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 중 하나를 의미합니까? –

+0

@JW, 그 불명확 함을 고쳤습니다 – aitchnyu

답변

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

'ON' 절에 이미'AND'를 사용하고 있기 때문에'where t2.sid IS NULL' 또는'where t2.cid IS NULL'만으로도 충분합니다. –

관련 문제