MySQL 中的動態資料透視表
使用資料庫時,建立資料透視表來彙總多列資料通常很有用。然而,當列名稱是動態的時,它可能會帶來挑戰。本文探討如何在 MySQL 中建立動態資料透視表,特別是當使用者 ID 為整數時。
在使用者提供的範例中,當使用者 ID 為整數時查詢失敗,但當使用者 ID 為整數時查詢正常那是一條繩子。出現問題的原因是這些值直接用作列名稱。要解決此問題,需要將值括在反引號 (`) 中以建立有效的列名稱。
例如,而不是:
max(case when user_id = 1 then score end) as 1
修正的語法將是:
max(case when user_id = 1 then score end) as `1`
此外,動態選擇列時,也必須包含反引號。更正後的查詢如下所示:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql FROM measure2; SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' FROM measure2 GROUP BY inspection_date'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
透過進行這些調整,即使使用者 ID 是整數,也可以成功產生資料透視表。
以上是如何使用整數使用者 ID 在 MySQL 中建立動態資料透視表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!