我有以下表格
订单:
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应输出: Delivered | Paris | London
我尝试了以下陈述:
SELECT orders.state, address.city FROM orders
LEFT JOIN address
ON orders.address1 = address.id OR orders.address2 = address.id;
它显然只输出一个地址城市,但我想要两个。
你知道这个声明应该是什么样子吗?
4条答案
按热度按时间vlju58qv1#
你可以做这个
self join
:fcwjkofz2#
如果希望表有别名,这将使其可读。
yks3o0rb3#
我们需要达成这样一种理解,即我们必须处理两个不同的表,而不是一个表,因为我们希望从同一个表得到不同的结果集。另外,我们需要的是精确的数据,而不是额外的数据,因此选择了内部连接
解决方案:
如果需要ddl和dml脚本:
希望这个答案更多地关注概念,而不是解决方案
7dl7o3gd4#
试试这个