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

use*_*738 3 mysql select 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.

man*_*nji 5

不存在:

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

左连接:

SELECT t1.*
FROM table1 t1
LEFT JOIN table2 t2 on t1.JID = t2.JID
                   AND t2.UID = 'php var'
WHERE t2.JID IS NULL
Run Code Online (Sandbox Code Playgroud)