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

标签 mysql sql join union

我正在尝试实现这个结果,“地点”表包含 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/

相关文章:

mysql查询以计算具有一定数量产品的客户

MySql查询语法错误DATE_SUB

sql - 我可以使用哪个 SQL 命令来查看 SQL Server 上表的结构?

mysql - 是否可以创建这样的 MySQL 查询?

mysql - 具有限制和搜索选项的特殊连接

sql - 为什么表的顺序在自连接中很重要

MYSQL 序列函数

php - 如何避免一次做 5000 个查询?

c# - Nunit MySQL 错误

mysql - 连接表并根据值将同一列获取到更多列