2012-10-31 163 views
0

request有外鍵字段jobuser。我需要拉行的子集,其中一個用戶同時具有一行job = 35和job = 34。獲取查詢結果的子集

此查詢是否正確地執行此作業?我相信是的。

SELECT * FROM `request` 
WHERE `job` = 35 AND `fulfilled` is NULL 
AND 
`user` IN 
(SELECT `user` FROM `request` WHERE `job` = 34 AND `fulfilled` is NULL) 
+0

哪裏'UNION'?另外,你應該避免使用'SELECT *'。始終指定一個列列表。爲什麼你不能只使用一個查詢? '(SELECT用戶FROM請求WHERE作業IN(34,35)AND履行IS NULL)'? – Kermit

+0

你需要行還是隻需要用戶?您的原始查詢僅返回job = '35'的行 – jalynn2

回答

7
SELECT user 
FROM request 
WHERE job IN (34,35) AND `fulfilled` is NULL 
GROUP BY user 
HAVING COUNT(DISTINCT job) = 2 
+0

謝謝並感謝您使用SQLFiddle鏈接;沒有意識到他們! – jerrygarciuh