Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的Count和distinct(表中以逗号分隔的数据)_Mysql - Fatal编程技术网

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

mysql中的Count和distinct(表中以逗号分隔的数据),mysql,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 差不多吧 注意请忽略破折号,因为这只是为了告诉您

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

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

Location
India
UK,Finland, India
USA, NZ, AUS, Spain
我正在尝试获取每个位置的计数

select count(distinct location) from posting
这是我目前为测试目的编写的查询。它还给我一个数字

我想获得如下详细信息

India -2
UK - 1 
Finland -1
USA - 1
差不多吧

注意请忽略破折号,因为这只是为了告诉您我想要什么

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

SELECT COUNT(location),location FROM posting;
试试这个。它将为您提供类似的输出


试试这个。它将为您提供类似的输出。

您不应该在一列中存储多个值。分隔字符串不是在SQL中存储值的正确方法。正确的方法是使用连接表

如果我假设您有一个位置列表,那么您可以:

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

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

您不应该在一列中存储多个值。分隔字符串不是在SQL中存储值的正确方法。正确的方法是使用连接表

如果我假设您有一个位置列表,那么您可以:

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

如果您没有这样的表,我建议您首先集中精力修复数据结构,而不是尝试让这样的查询工作。

选择位置,从发布中计数(不同位置)
应该可以工作。感谢投票人。我很想看到解释。
选择位置,从帖子中计数(不同的位置)
应该可以。感谢投票人。我想看看解释。这个答案是不正确的。第一列只能是0或1。此答案不正确。第一列只能是0或1。感谢您的回答。实际上,我正在使用select2选择多个位置,然后将它们保存在数据库中。您的查询中有一个错误。(从位置l连接)应该是(从发布l连接)我运行查询,但它只返回单个位置。不是所有的。有什么建议吗?我在写这个@Gordon,你简直是无敌:)谢谢你的回答。实际上,我正在使用select2选择多个位置,然后将它们保存在数据库中。您的查询中有一个错误。(从位置l连接)应该是(从发布l连接)我运行查询,但它只返回单个位置。不是所有的。有什么建议吗?我在写这个@Gordon,你简直是不可能打败的:)