mysql - LEFT JOIN 表和右边不存在的空值

标签 mysql sql-server left-join

我有两个表,CustomerscustomerTowns。我想将城镇名称存储在 customerTowns 中,并从存储在 Customers

中的 townID 链接到它

|客户| |城镇ID |

|customerTowns| |城镇ID | |城镇名称 |

我的sql如下,

SELECT townName, Customers.townID
FROM customerTowns
LEFT OUTER JOIN Customers
ON Customers.townID = customerTowns.townID

这几乎返回了我正在寻找的结果。除了,我希望为 customerTowns 中的每个条目重复 townID

|城镇名称 |城镇ID| |伦敦|1 | |伦敦|1 | |伦敦|1 | |伦敦|1 | |伦敦|1 | |曼彻斯特|NULL | |利物浦 |NULL |

我觉得我一定很接近,只是不知道如何只返回一行,或者为什么返回多行!

我想要的输出是;

|城镇名称 |城镇ID| |伦敦|1 | |曼彻斯特|NULL | |利物浦 |NULL |

最佳答案

使用 group by 或 distinct。

SELECT townName, Customers.townID
FROM customerTowns
LEFT OUTER JOIN Customers
ON Customers.townID = customerTowns.townID
GROUP BY townName, Customers.townID;

SELECT DISTINCT townName, Customers.townID
FROM customerTowns
LEFT OUTER JOIN Customers
ON Customers.townID = customerTowns.townID;

关于mysql - LEFT JOIN 表和右边不存在的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996886/

相关文章:

不同格式的php搜索日期

php - MySQL 空间表中两点之间的精确距离(以 KM 为单位)

sql - 执行 SQL Server 函数时列不明确?

mysql - JOIN 3 tables SUM 按月分组

mysql - 计算实例的数量,并将它们放入一列中,同时按另一列进行分组

php - 如何在mysql中使用 ".="将mysql查询连接成单个查询

sql - REGEXP 错误 - 在预期条件的上下文中指定的非 bool 类型的表达式,接近 'REGEXP'

SQL Server - 对整个列求和并分组

mysql - INNER 或 LEFT 将多个表记录连接成一行

mysql - SELECT where 子查询中的最大日期