我有两张桌子。
cities - id_city, city_name
properties - id_property, id_city, property_name
我想显示cities.city_name
并在其旁边显示[properties.count(id_city)]
如果没有找到记录而不是NULL
,如何创建仍返回零的查询,以便得到如下结果:
London [123]
New York [0]
Berlin [11]
其中“纽约”是[0],而不是NULL
而不是1?
答案 0 :(得分:20)
使用外部联接:
select cities.city_name, count(properties.id_city)
from cities left join properties on cities.id_city = properties.id_city
group by 1
答案 1 :(得分:19)
我认为以下内容会为您完成,但我还没有测试过。诀窍是在一个表中获取属性计数,然后将该表连接到cities表,使用IFNULL函数将NULL转换为0。
SELECT city_name, IFNULL(property_count, 0)
FROM cities
LEFT JOIN
(SELECT id_city, count(*) as property_count
FROM properties
GROUP BY id_city) city_properties
USING (id_city);
答案 2 :(得分:1)
查询:
SELECT cities.*, COUNT(properties.id_city) as num
FROM cities
LEFT JOIN properties on cities.id_city=properties.id_city
GROUP BY cities.id_city
应该在你想要的地方返回一个0计数,虽然我不是100%肯定它在MySQL中的工作方式。
答案 3 :(得分:-3)
简单。使用“(Count(*)+ 0)”。任何null加0都将返回一个数字。