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.
不存在:
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)
| 归档时间: |
|
| 查看次数: |
2416 次 |
| 最近记录: |