MySQL查询 - 按JSON值排序ID

时间:2017-04-08 09:20:28

标签: mysql json sorting

我有一个表,它包含排序json数值,我需要使用定义的json排序号对id进行排序...所以我有这样的表:

+----+------------+-----------------+
| id | channel    | sort            |
+----+------------+-----------------+
|  1 | US_CH 1    | ["1", "2", "4"] |
|  4 | US_CH 4    | ["1", "2", "4"] |
|  2 | US_CH 2    | ["1", "2", "4"] |
+----+------------+-----------------+

并希望得到这个:

+----+------------+-----------------+
| id | channel    | sort            |
+----+------------+-----------------+
|  1 | US_CH 1    | ["1", "2", "4"] |
|  2 | US_CH 2    | ["1", "2", "4"] |
|  4 | US_CH 4    | ["1", "2", "4"] |
+----+------------+-----------------+

所以重点是通过数组中json排序值的值来排序ID。我知道排序json值不是json结构,但我需要使用这个数字,因为我工作频道编辑器更新和添加有5000条记录的通道(enigma2 stb)所以我需要使用这个数字,因为它将存储小数据数据库以及插入和更新将更快。

我尝试使用JSON_SEARCH来提取单个值,但我需要所有值,以便我可以使用像ORDER BY JSON_EXTRACT(排序,' $ [提取数字]')

1 个答案:

答案 0 :(得分:1)

试试这个:

ORDER BY LOCATE(sort, CONCAT('"', id, '"'))