【问题标题】:How to double JOIN properly in SQL如何在 SQL 中正确地加倍 JOIN
【发布时间】:2016-10-16 03:01:46
【问题描述】:

我正在尝试选择所有 transactions,其中 billing_address 城市位于“纽约”,但 shipping_address 城市不在“纽约”。我正在努力解决的问题是,在查看transactions 表时,有两列(shipping_address_idbilling_address_id),它们各自的 id 作为两个单独的记录存储在address_table 中。

由于我需要检查transactions 表中这两列的送货/账单地址是否为“纽约”,因此我尝试在查询中对address_table 进行双重连接,虽然它似乎不能正常工作。有人知道我在哪里出错了吗?谢谢!

SELECT billing.id AS billing_address, shipping.id AS shipping_address
FROM transactions AS t
LEFT JOIN address_table AS billing
ON t.billing_address_id = billing.id
AND billing.city = 'New York'
AND t.billing_address_id IS NOT NULL
LEFT JOIN address_table AS shipping
ON t.shipping_address_id = shipping.id
AND shipping.city != 'New York'
AND t.shipping_address_id IS NOT NULL;

【问题讨论】:

  • 您能否对数据和预期结果进行采样。查询对我来说看起来不错

标签: mysql sql


【解决方案1】:

假设我理解正确,您只需要使用inner join

SELECT t.*,
       b.id AS billing_address, 
       s.id AS shipping_address
FROM transactions AS t
       JOIN address_table AS b ON t.billing_address_id = b.id      
       JOIN address_table AS s ON t.shipping_address_id = s.id
WHERE b.city = 'New York' AND
      s.city != 'New York'

【讨论】:

  • 谢谢!这帮助了很多 :)
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多