我有以下3个表。我需要一个单一的查询,以便从表1选择如果任一个匹配记录在表2或表3中找到。有条件连接的SQL查询
表1: 的recordId, 的GroupID, 名称
表2: 的recordId(其是Table1.RecordID) 子ID, AFLAG
表3: 的GroupID(这是Table1.GroupID) 子ID, AFLAG
我有以下3个表。我需要一个单一的查询,以便从表1选择如果任一个匹配记录在表2或表3中找到。有条件连接的SQL查询
表1: 的recordId, 的GroupID, 名称
表2: 的recordId(其是Table1.RecordID) 子ID, AFLAG
表3: 的GroupID(这是Table1.GroupID) 子ID, AFLAG
这是相当简单的,只需使用左连接和匹配上的ID
SELECT t1.* FROM table1 t2
LEFT JOIN table2 t2 ON t1.RecordID = t2.RecordID
LEFT JOIN table3 t3 ON t1.GroupID = t3.GroupID
WHERE t2.SubID IS NOT NULL OR t3.SubID IS NOT NULL
这应该让你更接近你的最终目标
布赖恩的帖子如此之快的最终连接表的存在! 或者......
select *
from table1
where (recordid in (select recordid from table2) )
OR (recordid in (select recordid from table3))
+1。 。 。你的回答比较好。布赖恩可能会产生重复。 –
你的基本的查询看起来有点这样的事情,我想:
SELECT *
FROM Table1 T1
WHERE EXISTS (SELECT 1 FROM Table2 T2 WHERE T1.RecordId = T2.RecordId)
OR EXISTS (SELECT 1 FROM Table3 T3 WHERE T1.GroupId = T3.GroupId)
那么你尝试过什么? – HLGEM