如何在 SQL 中使用 JOIN 编写子查询
How do I write a subquery using a JOIN in SQL
我有以下代码来检索和显示同时也是编辑的作者的名字和姓氏 (ED_ID = WRT_ID)。
SELECT Writers.WRT_LastName AS LastName, Writers.WRT_FirstName AS FirstName
FROM Writers INNER JOIN Editors ON Editors.ED_ID = Writers.WRT_ID;
它产生了我想要的结果,但我如何使用子查询编写它并产生相同的结果?
我使用的是 Access 2013
如果我需要提供更多信息,请告诉我。
您只需要将连接条件放入 where 子句子查询中即可:
SELECT WRT_LastName as LastName, WRT_FirstName as FirstName
FROM WRITERS
WHERE WRT_ID in (SELECT ED_ID FROM EDITORS)
据推测,您不想要重复的结果。我指出这一点,因为如果 Editors
table 有重复,子查询将与 join
不同。
典型的写法是使用 IN
或 EXISTS
。我倾向于选择后者,尽管两者通常在性能方面相当相似(另一方面,NOT EXISTS
在语义上优于 NOT IN
)。
SELECT Writers.WRT_LastName AS LastName, Writers.WRT_FirstName AS FirstName
FROM Writers
WHERE EXISTS (SELECT 1 FROM Editors WHERE Editors.ED_ID = Writers.WRT_ID);
我有以下代码来检索和显示同时也是编辑的作者的名字和姓氏 (ED_ID = WRT_ID)。
SELECT Writers.WRT_LastName AS LastName, Writers.WRT_FirstName AS FirstName
FROM Writers INNER JOIN Editors ON Editors.ED_ID = Writers.WRT_ID;
它产生了我想要的结果,但我如何使用子查询编写它并产生相同的结果?
我使用的是 Access 2013
如果我需要提供更多信息,请告诉我。
您只需要将连接条件放入 where 子句子查询中即可:
SELECT WRT_LastName as LastName, WRT_FirstName as FirstName
FROM WRITERS
WHERE WRT_ID in (SELECT ED_ID FROM EDITORS)
据推测,您不想要重复的结果。我指出这一点,因为如果 Editors
table 有重复,子查询将与 join
不同。
典型的写法是使用 IN
或 EXISTS
。我倾向于选择后者,尽管两者通常在性能方面相当相似(另一方面,NOT EXISTS
在语义上优于 NOT IN
)。
SELECT Writers.WRT_LastName AS LastName, Writers.WRT_FirstName AS FirstName
FROM Writers
WHERE EXISTS (SELECT 1 FROM Editors WHERE Editors.ED_ID = Writers.WRT_ID);