表: 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
答案 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。