MySQL クエリで行を列に動的に変換する
多くのデータ操作では、行を列に変換し、行数に基づいて列数を動的に調整する必要があります。 MySQL はこのピボット操作を直接サポートしていませんが、それをシミュレートする手法があります。
1 つの方法は、GROUP BY
関数と MAX
関数を使用することです。特定の列 (ID など) に基づいて行をグループ化し、MAX
関数を使用してそのグループ内の各注文の最大値を取得することで、注文ごとに列を作成できます。たとえば、次のクエリはテーブル A の行を結果テーブルの列に変換します。
<code class="language-sql">SELECT ID, MAX(IF(`order` = 1, data, NULL)) data1, MAX(IF(`order` = 2, data, NULL)) data2 FROM TableA GROUP BY ID</code>
<code class="language-sql">SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`) ) INTO @sql FROM TableName; SET @sql = CONCAT('SELECT ID, ', @sql, ' FROM TableName GROUP BY ID'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;</code>
<code>╔════╦═══════╦═══════╗ ║ ID ║ DATA1 ║ DATA2 ║ ╠════╬═══════╬═══════╣ ║ 1 ║ P ║ S ║ ║ 2 ║ R ║ Q ║ ╚════╩═══════╩═══════╝</code>
以上がMySQL クエリで行を列に動的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。