[英]How to turn a single row to multiple row in mysql?
前任:
“流派”列有一行數據:
+----------------------------+
| genres |
+----------------------------+
| action, adventure, drama | |
| |
+----------------------------+
我想要的 output 將是一個包含以下數據的列:
+------------+
| genre |
+------------+
| action |
| adventure |
| drama |
+------------+
我如何在 mysql 中進行操作?
您可以嘗試創建一個拆分 function 如下所示,以通過逗號獲取您期望值的一部分。
架構 (MySQL v5.7)
DELIMITER $$
DROP FUNCTION IF EXISTS `SPLIT_STR` $$
CREATE FUNCTION `SPLIT_STR`(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
) RETURNS varchar(255) CHARSET latin1
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '') $$
DELIMITER ;
然后使用UNION ALL
將這些結果組合起來,如下所示
查詢#1
SELECT SPLIT_STR(genres, ',', 1) genre FROM T
UNION ALL
SELECT SPLIT_STR(genres, ',', 2) FROM T
UNION ALL
SELECT SPLIT_STR(genres, ',', 3) FROM T;
類型 |
---|
行動 |
冒險 |
戲劇 |
筆記
我建議你重新設計你的表方案,因為它不利於逗號存儲值,你需要轉換為行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.