繁体   English   中英

SQL 左连接只返回一行而不是多行

[英]SQL left join only returns one row instead of many

我有两张表,一张是城市(id 和城市名称),一张是城市图片(city_id 等)。

假设我正在寻找名为锡比乌的城市。 那应该返回 3 个结果,因为表中有更多类似的城市(Miercurea Sibiului、Sibiu、Poiana Sibiului),但它只返回一个。

另外,请注意,timeline_elements 还没有城市的任何图片。

SELECT cities_countries.*, COUNT(timeline_elements.city_id) as number_of_photos 
FROM cities_countries   
LEFT JOIN timeline_elements on (cities_countries.id = timeline_elements.city_id)
WHERE cities_countries.name LIKE '%Sibiu%'

添加GROUP BY并明确提及cities_countries表的所​​有列名。 我认为这些是cities_countries表中的列。 id, city_id, city_name

还为每个表设置别名以提高可读性。

SELECT C.id, C.city_id, C.city_name, ....
       , COUNT(T.city_id) as number_of_photos 
FROM cities_countries C  
LEFT JOIN timeline_elements T ON C.id = T.city_id
WHERE C.name LIKE '%Sibiu%'
GROUP BY C.id, C.city_id, C.city_name, ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM