SQL与OR条件的多个连接

时间:2017-10-28 09:12:10

标签: sql postgresql

我有以下表格:

表A

  • ID
  • 名称

表B

  • ID
  • tableA_id

表C

  • id
  • tableA_id

所以表B和C有tableA_id fk。

我需要一个查询,它将返回TableA中所有在TableB或TableC中引用的id-。

如果我进行标准连接,它将仅返回在表B和C中都有引用的值。

我可以使用两个查询来做到这一点,一个加入B,其他加入C并使用UNION来合并结果,但我不想写两次相同的查询。

有没有办法实现这个'或'JOIN ??

3 个答案:

答案 0 :(得分: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

使用DISTINCT TAG消除重复。

答案 1 :(得分:0)

这样的东西?

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

答案 2 :(得分:0)

您可以使用左外连接并检查ID:

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