【发布时间】:2020-03-06 08:47:17
【问题描述】:
解释起来有点难,我就举例说明,
假设我有这样的表(标签是 json 列)
+----+-------------------+--------------------+
| id | occupation | tags |
+----+-------------------+--------------------+
| 1 | Mold Maker | [Men, Shop, Shoes] |
| 2 | Software Engineer | [Men, Lifestyle] |
| 3 | Electrician | [Shop, Lifestyle] |
| 4 | Software Engineer | [Men, Lifestyle] |
| 5 | Software Engineer | [Shoes] |
+----+-------------------+--------------------+
当我想获得独特的职业价值时,我只需像这样查询。
SELECT DISTINCT occupation FROM customers;
或SELECT occupation FROM customers GROUP BY occupation;
result
+-------------------+
| occupation |
+-------------------+
| Mold Maker |
| Software Engineer |
| Electrician |
+-------------------+
我想要标签的唯一值,如下所示
+-----------+
| tags |
+-----------+
| Men |
| Shop |
| Shoes |
| Lifestyle |
+-----------+
到目前为止,我尝试阅读 MySQL 手册和谷歌中的所有 JSON_* 函数和 JSON_TABLE,但找不到这样做的方法,是否有办法获得我想要的结果。
【问题讨论】:
-
如果你想在标签列中操作数据,那么你不应该将它存储为json,而是以规范化的形式。
-
您使用的是哪个版本的 MySQL?
-
@Shadow 你的意思是在单独的表格中存储标签?
-
@GMB mysql:5.7.
-
"到目前为止,我尝试阅读 MySQL 手册和谷歌中的所有 JSON_ 函数和 JSON_TABLE,但找不到这样做的方法,有没有办法得到我想要的结果。”* “非常感谢它在 MySQL 8 中工作,但在 5.6 中不能工作,你能帮忙吗?” this 是我如何调整或者我应该说 过去在 MySQL 8 下的 MySQL 版本中的
JSON_TABLE()支持中的“hacked” ...
标签: mysql sql arrays json unnest