標籤:
1、正常情況。
SELECT JoinEventIds from nt_mainnum
2、使用group_concat函數
select group_concat(JoinEventIds) from nt_mainnum
3、使用SUBSTRING_INDEX和CROSS JOIN將列裡面的的數字都拆分出來。
方法一(網上查詢的方法):
建配置表:
CREATE TABLE digits (digit INT(1)); INSERT INTO digits VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9); CREATE TABLE sequence (seq INT(3)); INSERT INTO sequence ( SELECT D1.digit + D2.digit * 10 FROM digits D1 CROSS JOIN digits D2 );
配置表sequence的結果為0-99的一列數字:
SQL:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(JoinEventIds, ‘,‘, seq), ‘,‘ ,- 1 ) JoinEventIdsFROM sequenceCROSS JOIN nt_mainnumWHERE seq BETWEEN 1AND ( SELECT 1 + LENGTH(JoinEventIds) - LENGTH( REPLACE (JoinEventIds, ‘,‘, ‘‘) ))
方法二(自己不想建表,圖省事):將sequence替換為SELECT @rownum:[email protected]+1 AS seq FROM (SELECT @rownum:=0) r, nt_mainnum LIMIT 0,100) ,這張表需要大於100條。
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(JoinEventIds, ‘,‘, seq), ‘,‘ ,- 1 ) JoinEventIds FROM (SELECT @rownum:=@rownum+1 AS seq FROM (SELECT @rownum:=0) r, nt_mainnum LIMIT 0,100) b CROSS JOIN nt_mainnum WHERE seq BETWEEN 1 AND ( SELECT 1 + LENGTH(JoinEventIds) - LENGTH(REPLACE(JoinEventIds, ‘,‘, ‘‘)))
結果均為:
Mysql 列轉行group_concat函數,與行轉列(原創)