如何在SQL中使用JOIN编写子查询

时间:2015-12-02 22:43:22

标签: sql ms-access subquery

我有以下代码来检索和显示同时也是编辑的作者的姓名和名字(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

如果我需要提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

您只需将连接条件放入where子句子查询中:

SELECT WRT_LastName as LastName, WRT_FirstName as FirstName
FROM   WRITERS
WHERE  WRT_ID in (SELECT ED_ID FROM EDITORS)

答案 1 :(得分:1)

据推测,您不希望重复结果。我指出了这一点,因为如果join表有重复,则子查询将与Editors不同。

这种写法的典型方法是使用INEXISTS。我倾向于使用后者,虽然这两者通常在性能上非常相似(另一方面,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);