所以我有一个表,其中的某个列的类型为 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/