gpt4 book ai didi

mysql - 如何多次加入同一个表?

转载 作者:行者123 更新时间:2023-11-29 09:56:33 25 4
gpt4 key购买 nike

我正在尝试实现这个结果,“地点”表包含 3 种类型的地点(州、城市、屠杀)。我想根据“type”(枚举列)将它们显示为不同的列。

这是我迄今为止尝试过的:

SELECT sifs.sif_id, places.`name` as city FROM sifs
INNER JOIN places ON sifs.city_id = places.id
union all
SELECT sifs.sif_id, places.`name` as slaughter FROM sifs
INNER JOIN places ON sifs.slaughter_id = places.id
union all
SELECT sifs.sif_id, places.`name` as state FROM sifs
INNER JOIN places ON sifs.state_id = places.id

查询结果如下:

sif_id | city
15 | Pedro Juan Caballero(PRY)
15 | FRIGONORTE
15 | Amambay(PRY)

这就是我想要的:

sif_id | state       | city                     | slaughter
15 | Amambay(PRY)| Pedro Juan Caballero(PRY)| FRIGONORTE

表字段:

sifs:sif_id、state_id、city_id、slaughter_id地点:名称、类型('州'、'城市'、'屠杀')

最佳答案

我认为您想要多个加入:

SELECT s.sif_id, pc.name as city, ps.name as slaughter,
pst.name as state
FROM sifs s LEFT JOIN
places pc
ON s.city_id = pc.id LEFT JOIN
places ps
ON s.slaughter_id = ps.id LEFT JOIN
places pss
ON s.state_id = pst.id;

这使用LEFT JOIN,因此sifs中的所有行都在结果集中,即使某些ID没有匹配项。

关于mysql - 如何多次加入同一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com