连接表的SQL查询

时间:2016-07-04 16:30:31

标签: sql select

表: service_providers

 id   name
 -----------
   1   A
   2   B
   3   C
   4   D

service_providers 映射

id   service_receiver_id    service_provider_id
---------------------------------------------------
 1            1                      2
 2            4                      1

如何编写SQL查询以检索与上述映射表关联的service_provider_id = 1

我需要这样的结果:

id    associated_with
---------------------
 1          2
 1          4

2 个答案:

答案 0 :(得分:1)

您的所有结果似乎都来自第二张表格,因此您甚至不需要加入:

SELECT service_receiver_id AS associated_with
FROM   mytable
WHERE  service_provider_id = 1
UNION ALL
SELECT service_provider_id AS associated_with
FROM   mytable
WHERE  service_receiver_id = 1

答案 1 :(得分:0)

SELECT DISTINCT
    CASE
       WHEN r.service_provider_id <> 1 THEN r.service_provider_id
       ELSE r.service_reciever_id
    END as associated_with
FROM
    Relationships r
WHERE
    r.service_provider_id = 1
    OR r.service_reciever_id = 1

@Mureinik是正确的,你不需要加入,但是为了提供另一个不需要联合的解决方案,你也可以在where子句中使用case语句和OR。

服务提供商是否也可以成为接收者?或者,如果存在重复记录,您可能希望在可能的情况下考虑使用DISTINCT。