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

Dav*_*ing 14 mysql zero

我有两张桌子.

cities - id_city, city_name
properties - id_property, id_city, property_name
Run Code Online (Sandbox Code Playgroud)

我想显示cities.city_name它旁边[properties.count(id_city)]

如果没有找到记录,如何使查询仍返回零NULL,以便得到如下结果:

London [123]
New York [0]
Berlin [11]
Run Code Online (Sandbox Code Playgroud)

"纽约"是[0],NULL不是1而不是1?

Chs*_*y76 21

使用外部联接:

select cities.city_name, count(properties.id_city)
  from cities left join properties on cities.id_city = properties.id_city
  group by 1
Run Code Online (Sandbox Code Playgroud)

  • 我已经改变了查询 - 看一看.而不是count(*)你应该使用count(左连接表中的列) (2认同)

Sha*_*awn 21

我认为以下内容将为您完成,但我还没有测试过.诀窍是在一个表中获取属性计数,然后将该表连接到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);
Run Code Online (Sandbox Code Playgroud)