当前位置: 首页 > 面试题库 >

在MySQL中以逗号分隔的行中获取不同值的计数

万高轩
2023-03-14
问题内容

表格Jobs有2列JobId,保存工作位置时的城市可能是多个城市,如下所示

-----------------------------
JobId               City
-------------------------------
1                   New York
2                   New York , Ohio , Virginia
3                   New York , Virginia

我想如何在类似城市的城市中计算Jobid想要在纽约市中计算Jobid的结果

纽约3俄亥俄州1弗吉尼亚2


问题答案:
SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(all_city, ',', num), ',', -1) AS one_city,
  COUNT(*) AS cnt
FROM (
  SELECT
    GROUP_CONCAT(city separator ',') AS all_city,
    LENGTH(GROUP_CONCAT(citySEPARATOR ',')) - LENGTH(REPLACE(GROUP_CONCAT(citySEPARATOR ','), ',', '')) + 1 AS count_city
  FROM table_name
) t
JOIN numbers n
ON n.num <= t.count_city
GROUP BY one_city
ORDER BY cnt DESC;

为了获得用逗号分隔的不同值的计数,可以在查询之上运行,但是要获得正确的结果,您应该再使用一个表**numbers**,该表只有一个列num整数类型,并插入一些值。如果在此情况下在GROUP_CONCAT(城市分隔符’,’)AS
all_city期间出错,则设置一个全局变量“ SET group_concat_max_len = 18446744073709547520;”



 类似资料:
  • 问题内容: 比较mysql中逗号分隔的值,并在countcolumn中获取匹配的输出 例子: 通过比较ID 1和2,输出应为1 通过比较ID 2和3,输出应为1 通过比较ID 3和1,输出应为2 问题答案: 首先,您列出的数据实际上应该以一种格式存储,数据库的每一行都存储一个和一个,即3元素列表将对应3行。如果对您的结构进行了更改,则以下答案将是有意义的。 就目前而言,这是我整合的一个不错的MyS

  • 问题内容: 我正在从存储过程中调用Scalar UDF以获取列值。在标量UDF内,我有一个xml,并且必须获取特定节点的逗号分隔值。我使用了Cross apply,但是它导致了巨大的性能瓶颈,因为存储过程实际上是用来获取报告的。 有一个[旅行者]表,其中包含字段ID,BookingID(可以重复)和FareDetails。在FareDetails内部,我们存储xml。 UDF内部的逻辑如下:第一解

  • 问题内容: 我的数据库中有一个表,如下所示: 我需要创建一个SELECT语句,该语句在’mgroup_others’逗号分隔列表中指定整数的位置选择所有成员。因此,例如,我编写了一条SQL语句,该语句将选择’mgroup_others’包含‘10’的所有成员,并且它将返回成员1、2和3但不返回成员4,因为10不在该字段中。任何帮助将不胜感激!谢谢。我也是用PHP编写的。 问题答案: 由于是列,如果

  • 问题内容: 我的一个表中有一列,其中存储多个用逗号分隔的ID。有没有一种方法可以在查询的“ IN”子句中使用此列的值。 column()的值类似于 我需要用作 我对Crozin的回​​答感到满意,但我愿意接受建议,观点和选择。 随时分享您的观点。 问题答案: 以@Jeremy Smith的FIND_IN_SET()示例为基础,您可以使用联接来完成此操作,因此不必运行子查询。 这是众所周知的非常表现

  • 问题内容: 如何从MySql中存储为逗号分隔值的数据中选择不同值的计数?最后,我将使用PHP从MySql输出数据。 里面有每个帖子的标签。因此,最后,我试图输出数据,就像stackoverflow处理其标签的方式一样,如下所示: 这就是表中数据的样子(对内容感到抱歉,但这是一个食谱网站)。 输出量 我正在尝试,但是由于它是用逗号分隔的数据,因此似乎无法执行此操作。不管用。 您能在mysql中还是使

  • 问题内容: 我在MySQL中有一个函数,该函数返回由逗号分隔的整数值列表,从而形成一个字符串。 例如 退货 这是后端(Java)所需的简单功能-但是现在,由于建议了新功能,我需要这些结果用于另一个查询,该查询可能正在使用 IN 关键字遍历这些查询,如下所示: 作为单个csv元素,MyFunction(23)的结果不可迭代。如果我可以使用某些函数,例如可以生成结果的函数,则以下内容将非常适合我的查询