2009-10-19 82 views
3

我想從表1中選擇包含列JID的所有內容。這些是玩家可以學習的東西。但是有一張表格2,其中列出了玩家已經學習的東西。所以如果JID在表2中,已經知道了,我不想從表1中選擇。從table1中選擇*,其中JID不在table2中,而table2.uid也不是11111

對於例證。

表1 JID標題描述排名

表2 JID的用戶ID值1值2

表1中可能有100行,但如果表2有9行與一些JID從表1中的,我不要他們選擇。更重要的是,它是特定於表2中的用戶ID。所以我需要通過JID!過濾table2 =在table1中匹配JID,但只有當userID =一個php變量傳遞時纔有效。

希望這個意義。我不想要子查詢。我認爲可能在JID上使用左外連接,但我不確定如何調用USERID ... HELP!

ps如果UID不匹配,那麼JID可以在table1和table2中...如果它匹配,那麼在table2中不能找到JID來選擇。

回答

5

與不存在:

SELECT t1.* 
FROM table1 t1 
WHERE NOT EXISTS (SELECT NULL 
        FROM table2 t2 
        WHERE t2.UID = 'php var' 
        AND t1.JID = t2.JID) 

與左連接:

SELECT t1.* 
FROM table1 t1 
LEFT JOIN table2 t2 on t1.JID = t2.JID 
        AND t2.UID = 'php var' 
WHERE t2.JID IS NULL 
+1

SELECT * FROM T1 LEFT OUTER JOIN T2 ON(t1.JID = t2.JID) 和T2。 UID ='php var' WHERE t2.JID is NULL 工作完美無需子查詢,謝謝!非常快的答覆! – user192738 2009-10-19 23:38:48

相關問題