如果没有找到记录,则Mysql计数返回零

时间:2009-10-06 23:36:47

标签: mysql zero

我有两张桌子。

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?

4 个答案:

答案 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都将返回一个数字。