我有以下代码来检索和显示同时也是编辑的作者的姓名和名字(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
如果我需要提供更多信息,请告诉我。
答案 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
不同。
这种写法的典型方法是使用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);