mysql - 按逗号分隔列表的特定索引排序

标签 mysql arrays csv

我以逗号分隔的格式存储数据,我想运行一个查询,以便用户按列中的第二个值排序。

对于这个示例数据:

user     |  Data
________________________________________
player1   | 45471,2529,32196008193896,99
admin     |  1136,2595,17760808279311,95 
gamer     | 13495,2432,32196008193896,98
________________________________________

顺序为 (2595-2529-2432),即 admin => player1 => gamer。

最佳答案

正如我在评论中提到的,您确实应该尽量避免存储这样的分隔列表。

但是,您可以使用 SUBSTRING_INDEX() 编写查询来解析第二个值。功能。该函数接受一个字符串、分隔符和一个整数,无论​​是否从分隔符的左/右取以及取多少。换句话说,要获取第二个逗号剩下的所有内容,它看起来像这样:

SELECT SUBSTRING_INDEX(data, ',', 2)
FROM myTable;

然后,您希望该字符串中的所有内容都位于第一个逗号的右侧,因此您必须嵌套函数。 (请注意,这可能会降低效率,但这就是分隔列表的缺点):

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', 2), ',', -1)
FROM myTable;

然后,您可以按该值进行排序:

SELECT *
FROM myTable
ORDER BY SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', 2), ',', -1) DESC;

这是一个SQL Fiddle示例。

关于mysql - 按逗号分隔列表的特定索引排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058237/

相关文章:

php 内爆(101)带引号

python - Numpy csv 脚本给出 'ValueError: setting an array element with a sequence'

javascript - 将 nicedit textarea 内容保存到 mysql 数据库中

javascript - 如何比较javascript/jquery中的不同数组并取回数组中不同的列

c++ - C/C++ 中大数组的运行时错误

arrays - 打印函数指针时出现不兼容的指针类型警告

python - 使用 Python 将 CSV 文件从目录导入到 MySql 表中

mysql - 无法在 Lag() 中使用 Count(*)

mysql 错误 #1062 - 重复条目 UPDATE 列

php - 使用 OOP PHP 的 mysql.php 中出现 fatal error : Cannot access empty property,