找准目标,不断前行

mysql中将一行数据根据条件分拆多行

以下用法只支持mysql8.0以上;

遇到了个数据结构,字符串用逗号隔开的,需要分拆后统计数据,用到了mysql8的一个JSON_TABLE用法

CREATE TABLE items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    tags VARCHAR(255)
);

INSERT INTO items (name, tags) VALUES ('Item1', 'tag1,tag2,tag3');
INSERT INTO items (name, tags) VALUES ('Item2', 'tag4,tag5');

SELECT i.id, i.name, jt.tag FROM items i, JSON_TABLE( CONCAT('["', REPLACE(i.tags, ',', '","'), '"]'), '$[*]' COLUMNS (tag VARCHAR(255) PATH '$') ) jt ORDER BY i.id, jt.tag;

  输出结构如下:

+----+-------+------+
| id | name  | tag  |
+----+-------+------+
|  1 | Item1 | tag1 |
|  1 | Item1 | tag2 |
|  1 | Item1 | tag3 |
|  2 | Item2 | tag4 |
|  2 | Item2 | tag5 |
+----+-------+------+
posted @ 2024-10-23 16:22  kevinZhuZhu  阅读(6)  评论(0编辑  收藏  举报