2017-10-28 69 views
0

我有如下表: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合并结果,但我不想写两次相同的查询。

有没有办法实现这个'或'加入?

+2

可以使用EXISTS或2外连接,并检查其至少1个非空从A/B返回的值(聚结将在那里工作)。 – Igor

回答

0

尝试用这种

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 

使用独特标记,可以消除重复。

0

像这样的东西?

SELECT 
    * 
FROM 
    TableA, 
    TableB, 
    TableC 
WHERE 
    TableA.id = TableB.tableA_id 
    OR TableA.id = TableC.tableA_id 
0

可以使用左外联接和用于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