mysql中的count和distinct(表中以逗号分隔的数据)

时间:2016-03-13 17:56:54

标签: mysql

我正在尝试从mysql数据库中获取详细信息。

我的表有位置字段。 数据如下所示

Location
India
UK,Finland, India
USA, NZ, AUS, Spain

我正在尝试获取每个位置的计数。

select count(distinct location) from posting

这是我目前为测试目的而编写的查询。它让我重新计算。

我想获得如下的详细信息。

India -2
UK - 1 
Finland -1
USA - 1

类似的东西。

注意请忽略破折号,因为这只是为了向您展示我想要的内容。

请告诉我,因为我不擅长数据库。

2 个答案:

答案 0 :(得分:2)

SELECT COUNT(location),location FROM posting;

试一试。它会给你一个类似的输出。

答案 1 :(得分:2)

您不应该在单个列中存储多个值。分隔字符串不是在SQL中存储值的正确方法。正确的方法是联结表。

如果我假设你有一个地点列表,那么你可以这样做:

select l.location, count(*)
from location l join
     posting p
     on find_in_set(l.location, p.location) > 0;

如果您没有这样的表,我建议您首先关注修复数据结构,而不是试图让这样的查询起作用。