3

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

例如。

表 1 JID 标题 描述 等级

表 2 JID UserID value1 value2

表 1 可能有 100 行,但如果表 2 有 9 行,其中包含表 1 中的一些 JID,我不希望它们被选中。更重要的是,它特定于表 2 中的用户 ID。所以我需要通过 JID 过滤表 2!= 匹配表 1 中的 JID,但只有当用户 ID = php 变量传递时。

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

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

4

1 回答 1

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
于 2009-10-19T23:14:30.717 回答