mysql - SQL LEFT-JOIN 带有 2 个外键并将它们合并为一行 (MySQL)

标签 mysql sql join foreign-keys left-join

我有下表

订单:

id | address1 | address2 | state
1  | 2        | 4        | Delivered
2  | 7        | 1        | Payment

地址:

id | city
1  | New York 
2  | Paris   
4  | London 
7  | Berlin

现在我需要一份声明来获取两个城市的订单状态。

例如订单 ID 1 应输出: 已交付 |巴黎 |伦敦

我尝试了以下语句:

SELECT orders.state, address.city FROM orders
  LEFT JOIN address 
    ON orders.address1 = address.id OR orders.address2 = address.id;

它显然只输出一个地址城市,但我想要两个。

知道该声明应该是什么样子吗?

最佳答案

您可以进行自加入:

select o.status, ad.city, ad1.city
from Orders o 
left join Address ad on ad.id = o.address1 
left join Address ad1 on ad1.id = o.address2;

关于mysql - SQL LEFT-JOIN 带有 2 个外键并将它们合并为一行 (MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50230905/

相关文章:

sql - PSQL : select subquery and group by

sql - 如何加快三个大表的 INNER JOIN 中分组的 COUNT 个值的速度?

mysql - 我需要在 mySQL 中编写一个函数来返回拥有最多粉丝的球队

Java、SQL 数据库连接

sql - 将两个 count(*) 结果相加

MySQL 数组字段上的内连接

Mysql sum distinct 基于包含多个LEFT JOIN的其他列

mysql - 返回所有带 count(*) 的行,包括 count(*)=0

mysql - 如何使用sql简单查询从不同表插入数据

php - 通过以太网安全地将数据从 Arduino 发送到 MySQL 数据库