我有如下表:SQL多用OR条件加入
表A
- ID
- 名
表B
- ID
- tableA_id
表C
- ID
- tableA_id
所以表B和C tableA_id
FK。
我需要一个查询,该查询将返回TableA中所有在TableB或TableC中都有引用的id-s。
如果我不加入标准,这将只返回有两个表B和C.
我可以做到这一点使用两个查询,一个加入的B的参考值,其他加入C和使用UNION合并结果,但我不想写两次相同的查询。
有没有办法实现这个'或'加入?
我有如下表:SQL多用OR条件加入
表A
表B
表C
所以表B和C tableA_id
FK。
我需要一个查询,该查询将返回TableA中所有在TableB或TableC中都有引用的id-s。
如果我不加入标准,这将只返回有两个表B和C.
我可以做到这一点使用两个查询,一个加入的B的参考值,其他加入C和使用UNION合并结果,但我不想写两次相同的查询。
有没有办法实现这个'或'加入?
尝试用这种
SELECT DISTINCT TABLEA.ID_A, TABLEA.NAME
FROM TABLEA,TABLEB,TABLEC
WHERE TABLEA.ID_A = TABLEB.ID_A AND TABLEA.ID_A = TABLEC.ID_A
使用独特标记,可以消除重复。
像这样的东西?
SELECT
*
FROM
TableA,
TableB,
TableC
WHERE
TableA.id = TableB.tableA_id
OR TableA.id = TableC.tableA_id
可以使用左外联接和用于IDS检查:
SELECT a.id FROM A a
LEFT JOIN B b ON a.id = b.tableA_id LEFT JOIN C c ON a.id = c.tableA_id
WHERE b.id IS NOT NULL OR c.id IS NOT NULL
可以使用EXISTS或2外连接,并检查其至少1个非空从A/B返回的值(聚结将在那里工作)。 – Igor