mysql - 字符 MySQL 出现次数最多的行

标签 mysql sql

所以我有一个表,其中的某个列的类型为 VARCHAR(256)。现在我想找到该列中逗号最多的行(因为该列包含列分隔值)。我将如何着手执行此操作(假设使用 MySQL 数据库)?

我在想一些事情

SELECT LEN(<column_name>)
FROM <table_name>
WHERE Replace(<column_name>, ......
ORDER BY DESC
LIMIT 1;

我对 MySQL(或一般的 SQL)没有太多经验,我找不到很多有用的文档,所以我非常感谢任何帮助完成这件事。

最佳答案

,替换为''后,用列长减去列长,得到逗号个数。然后按计算列排序以获得所需的行。

SELECT t.*,LEN(column_name) - LEN(REPLACE(column_name,',','')) num_commas
FROM table_name t
ORDER BY num_commas DESC
LIMIT 1

编辑:正如@Strawberry 在评论中指出的那样,如果出现平局,上面的查询将从表中选取任意行。要在出现平局时获取所有行,请使用

SELECT t.* 
FROM tablename t
JOIN (SELECT MAX( LEN(column_name) - LEN(REPLACE(column_name,',','')) ) max_commas
      FROM table_name) m 
ON m.max_commas =  LEN(column_name) - LEN(REPLACE(column_name,',',''))

关于mysql - 字符 MySQL 出现次数最多的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38666243/

相关文章:

mysql - 在逗号分隔值列中查找逗号分隔子组的最佳 mysql 查询是什么

python - 抓取并存储数据以供 html 显示

c# - 使用列名称的字符串列表查询 SQL 表

sql - 重构 UPDATE CASE 语句以提高性能

php - 验证记录存在的数据库条件

sql - SQL 中的整数值右填充

PHP & Mysql 批量选定数据并用一个 html 表单更新所有选定数据

mysql - 使用另一个表值更新一个表记录

php - 表单数据在第二个 POST 中被覆盖?

sql - 对 CTE 查询进行排序