mysql - 如何在 SQL 中正确地加倍 JOIN

标签 mysql sql

我正在尝试选择 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;

最佳答案

假设我理解正确,您只需要使用内部联接:

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'

关于mysql - 如何在 SQL 中正确地加倍 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066386/

相关文章:

mysql - 如何在 MySQL 中使用此字符串替换

php - 我的 PHP 项目上有一种操作处理程序吗?

java - 使用JDBC和MySQL解决“通信链接失败”问题

php - 加入(wordpress)缺少行的元表

php - Mysql WHERE 子句帮助

javascript - 当我单击删除按钮时查询未运行,即使 .success 说它有效

mysql - 如何使用两列得到第三列的结果

SQL 查询按两个不同的列分组

c# - 无法为表中的标识列插入显式值

mysql - 填补mysql中重复序列中的空白