2009-10-19 49 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

相关问题