在MySQL中將動態(tài)行轉(zhuǎn)列可以使用GROUP_CONCAT函數(shù)以及動態(tài)SQL語句來實現(xiàn)。以下是一個示例代碼:
假設有一個表格名為data
,包含以下數(shù)據(jù):
id | name | value |
---|---|---|
1 | attribute1 | 10 |
1 | attribute2 | 20 |
2 | attribute1 | 15 |
2 | attribute2 | 25 |
要將這些數(shù)據(jù)按照id進行行轉(zhuǎn)列,可以使用以下SQL語句:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN name = ''',
name,
''' THEN value END) AS ',
name
)
) INTO @sql
FROM data;
SET @sql = CONCAT('SELECT id, ', @sql, ' FROM data GROUP BY id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
運行以上代碼后,將獲得以下結(jié)果:
id | attribute1 | attribute2 |
---|---|---|
1 | 10 | 20 |
2 | 15 | 25 |
這樣就實現(xiàn)了將動態(tài)行轉(zhuǎn)列的功能。