Jadual Pangsi Dinamik dalam MySQL
Apabila bekerja dengan pangkalan data, selalunya berguna untuk mencipta jadual pangsi untuk meringkaskan data merentas berbilang lajur. Walau bagaimanapun, apabila nama lajur adalah dinamik, ia boleh memberikan cabaran. Artikel ini meneroka cara mencipta jadual pangsi dinamik dalam MySQL, terutamanya apabila ID pengguna ialah integer.
Dalam contoh yang diberikan oleh pengguna, pertanyaan gagal apabila ID pengguna ialah integer, tetapi berfungsi dengan baik apabila ia adalah rentetan. Isu itu timbul kerana nilai digunakan sebagai nama lajur secara langsung. Untuk menyelesaikan masalah ini, adalah perlu untuk membalut nilai dalam tanda belakang (`) untuk mencipta nama lajur yang sah.
Sebagai contoh, bukannya:
max(case when user_id = 1 then score end) as 1
Sintaks yang diperbetulkan ialah:
max(case when user_id = 1 then score end) as `1`
Selain itu, apabila memilih lajur secara dinamik, tanda belakang juga mesti disertakan. Pertanyaan yang diperbetulkan akan kelihatan seperti:
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;
Dengan membuat pelarasan ini, jadual pangsi boleh dijana dengan jayanya, walaupun ID pengguna ialah integer.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Jadual Pangsi Dinamik dalam MySQL dengan ID Pengguna Integer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!