[英]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.