mysql根据逗号分割字段
时间: 2023-10-12 20:20:04 浏览: 54
如果要根据逗号分割字段,可以使用MySQL内置的函数`SUBSTRING_INDEX()`。
例如,假设我们有一个表`test`,其中有一个字段`tags`存储了多个标签,多个标签之间以逗号隔开,如下所示:
```
+----+---------------------+
| id | tags |
+----+---------------------+
| 1 | mysql, database |
| 2 | php, web development|
| 3 | python, data science|
+----+---------------------+
```
现在我们想要查询出每个标签出现的次数,可以使用如下SQL语句:
```
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(tags, ',', numbers.n), ',', -1) AS tag, COUNT(*) AS count
FROM test
CROSS JOIN
(
SELECT 1 n UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5
) numbers
WHERE numbers.n <= 1 + (LENGTH(tags) - LENGTH(REPLACE(tags, ',', '')))
GROUP BY tag
ORDER BY count DESC;
```
这个SQL语句使用了`SUBSTRING_INDEX()`函数和`CROSS JOIN`,将每个标签分离出来,并统计每个标签出现的次数。最终的查询结果如下所示:
```
+-------------+-------+
| tag | count |
+-------------+-------+
| mysql | 1 |
| database | 1 |
| php | 1 |
| web development| 1 |
| python | 1 |
| data science| 1 |
+-------------+-------+
```
这个方法虽然比较繁琐,但是可以实现根据逗号分割字段的功能。