我有以下 3 张桌子。如果在表 2 或表 3 中找到匹配记录,我需要从表 1 中选择一个查询。
表 1:RecordID、GroupID、名称
表2:RecordID(即Table1.RecordID)、SubID、AFlag
表3:GroupID(即Table1.GroupID)、SubID、AFlag
布莱恩发帖这么快!或者...
select *
from table1
where (recordid in (select recordid from table2) )
OR (recordid in (select recordid from table3) )
这相当简单,只需使用左连接并匹配最终连接表的 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 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 )