Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Keputusan Pertanyaan dalam MySQL Menggunakan GROUP BY?
Ubah baris kepada lajur dalam jadual MySQL menggunakan teknik PIVOT atau GROUP BY.
PIVOT, teknik transformasi data, menyusun semula data baris ke dalam lajur. Dalam kes ini, matlamatnya ialah untuk mengumpulkan data mengikut lajur tertentu, seperti cap masa dan memaparkan setiap nilai data sebagai lajur yang berasingan.
Sebaliknya sintaks PIVOT tradisional , yang tidak disokong secara meluas dalam MySQL, fungsi SUM() boleh digunakan bersama dengan pernyataan CASE untuk mencapai hasil yang diingini.
<code class="sql">SELECT d.data_timestamp , SUM(CASE WHEN data_id = 1 THEN data_value ELSE 0 END) AS 'input_1' , SUM(CASE WHEN data_id = 2 THEN data_value ELSE 0 END) AS 'input_2' ... , SUM(CASE WHEN data_id = 20 THEN data_value ELSE 0 END) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC</code>
Sebagai alternatif, pernyataan IF boleh digunakan dalam fungsi SUM() untuk mencapai hasil yang sama.
<code class="sql">SELECT d.data_timestamp , SUM(IF(data_id = 1, data_value, 0)) AS 'input_1' , SUM(IF(data_id = 2, data_value, 0)) AS 'input_2' ... , SUM(IF(data_id = 20, data_value, 0)) AS 'input_20' FROM data GROUP BY data_timestamp ORDER BY data_timestamp ASC</code>
Pendekatan lain ialah menggunakan berbilang pernyataan JOIN untuk mencipta output yang diingini.
<code class="sql">SELECT d.data_timestamp , d01.data_value AS 'input_1' , d02.data_value AS 'input_2' ... , d20.data_value AS 'input_20' FROM (SELECT DISTINCT d.data_timestamp FROM data ) AS d LEFT JOIN data AS d01 ON d01.data_timestamp = d.data_timestamp AND d01.data_id = 1 LEFT JOIN data AS d02 ON d02.data_timestamp = d.data_timestamp AND d02.data_id = 2 ... --- 20 JOINs LEFT JOIN data AS d20 ON d20.data_timestamp = d.data_timestamp AND d20.data_id = 20 ORDER BY d.data_timestamp ASC</code>
Dengan menggunakan teknik ini, anda boleh dengan mudah memutar hasil pertanyaan dalam MySQL menggunakan GROUP BY.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Keputusan Pertanyaan dalam MySQL Menggunakan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!