【发布时间】:2020-02-06 22:44:07
【问题描述】:
有 2 个表: - 用户(id,伪) - Link(id1,id2),这两列是 id User 上的 FK
我想选择所有没有链接的 id = 10 的用户。这意味着我想要用户的所有 id,但前提是 Link(10, id2) 不存在。
我尝试了左连接,但结果不正确
select distinct *
from USER
left join LINK on USER.id = LINK.id1
where LINK.id1 != 10
【问题讨论】:
-
了解 LEFT JOIN ON 返回的内容:INNER JOIN ON 行 UNION ALL 不匹配的左表行,由 NULL 扩展。作为 OUTER JOIN 的一部分,始终知道您想要什么 INNER JOIN。 WHERE 或 INNER JOIN ON 在 OUTER JOIN ON 删除任何由 NULL 扩展的行后,需要右 [sic] 表列不为 NULL,即只留下 INNER JOIN ON 行,即“将 OUTER JOIN 转换为 INNER JOIN”。你有那个。这是一个很容易找到的常见问题解答。
标签: sql performance join