【发布时间】:2020-05-08 23:42:40
【问题描述】:
嘿,我整天都在寻找和寻找。进一步了解我的问题和选项。由于我缺乏理解。
我的一般问题是,我正在尝试根据 JSON 中的值选择行,并通过选择的值对选择进行排序。
我有一个表(元素),有两列:Person 和 Tags。标签包含一个 JSON 数组,其中可以包含多个 JSON 对象。对象总是有“名称”和“排序”。
+-------------+------------------------------------------------------------------+
| Person | tags
+-------------+------------------------------------------------------------------+
| William | [{"name": "apple", "sort": "1"}, {"name": "orange", "sort": "2"}]
| Anna | [{"name": "apple", "sort": "3"}, {"name": "orange", "sort": "1"}]
| Michael | [{"name": "apple", "sort": "2"}]
+-------------+------------------------------------------------------------------+
理想情况下,我想做的是告诉数据库使用 SELECT * FROM 元素 WHERE 标签(有一个名称为“apple”的对象) ORDER by(匹配对象的排序值);
所以如果我给它“苹果”,它会列出:威廉、迈克尔、安娜。
如果我给它“橙色”,它会列出:安娜,威廉。
我一直在研究在 SELECT(子查询)中包含 SELECT,但我可以找到与 JSON 的正确组合。下面是我得到的最接近的,但我可以说它需要更高级的东西?
SELECT *
FROM elements
WHERE JSON_SEARCH( tags, 'one', 'apple', NULL, '$[*].name' ) IS NOT NULL
这将返回所有带有苹果标签的人,但不会根据排序对他们进行排序。
欢迎任何建议,在此先感谢。
【问题讨论】:
标签: mysql sql json database directory-listing