Du kan bruge GROUP BY
og MAX
at simulere pivot. MySQL understøtter også IF
erklæring.
SELECT ID, MAX(IF(`order` =1, data, NULL)) data1, MAX(IF(`order` =2, data, NULL)) data2FROM TableAGROUP BY ID
Hvis du har flere værdier af orden
, dynamisk SQL kan være mere passende, så du ikke behøver at ændre forespørgslen:
SET @sql =NULL;SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(`order` =', `order`, ',data,NULL)) AS data', `order`) ) INTO @sqlFROM TableName;SET @sql =CONCAT('SELECT ID, ', @sql, ' FROM TableName GROUP BY ID');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
OUTPUT AF BEGGE FORESPØRGSEL:
╔════╦═══════╦═══════╗║ ID ║ DATA1 ║ DATA2 ║════════════ ══════╣║ 1 ║ P ║ S ║║ 2 ║ R ║ Q ║╚════╩═════════════-kode