从table1中选择*,其中JID不在table2中,table2.uid也不是11111

时间:2009-10-19 23:08:00

标签: select mysql left-join

我想从表一中选择所有内容,其中包含一个列JID。这些是玩家可以学习的东西。但是有一个table2,其中列出了玩家已经学过的东西。因此,如果JID在table2中,它已被学习,我不希望从表1中选择它。

例如。

表1 JID标题描述等级

表2 JID UserID value1 value2

表1可能有100行,但如果表2有9行,其中一些JID来自表1,我不希望它们被选中。更重要的是,它特定于表2中的用户ID。所以我需要通过JID过滤table2!=匹配table1中的JID,但只有在userID =传递了php变量的情况下。

希望这是有道理的。我不想要子查询。我认为可以在JID上使用左外连接,但我不确定如何调用USERID ......帮助!

ps如果UID不匹配,JID可以在table1和table2中......如果匹配,则在table2中找不到要选择的JID。

1 个答案:

答案 0 :(得分: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