Heim > Fragen und Antworten > Hauptteil
Ich verwende MySQL 5.7.
Ich suche nach einer SQL-Abfrage, die einige Daten von Zeilen in Spalten „rotiert“. Das Formular lautet wie folgt:
users
Tisch
user_id,first_name 1,Alice 2,Bob 3,Eve 4,Mallory
user_groups
Tisch
user_id,group_name 1,Administrator 2,Editor 2,Contributor 3,Viewer
Mit einer begrenzten Anzahl an Gruppen möchte ich die folgenden Ergebnisse erzielen:
user_id,first_name,Administrator,Editor,Contributor,Viewer 1,Alice,Yes,No,No,No 2,Bob,No,Yes,Yes,No 3,Eve,No,No,No,Yes 4,Mallory,No,No,No,No
Ich bin mir nicht einmal sicher, wie ich diese Abfrage nennen soll, aber genau das möchte ich tun. „Ja“ und „Nein“ können in beiden Fällen 0 und 1 oder NULL und 1 sein.
Irgendwelche Ideen?
P粉2390894432024-03-30 00:13:57
SELECT u.user_id, MAX(CASE group_name WHEN 'Administrator' THEN 'Yes' ELSE 'No' END) AS Administrator, MAX(CASE group_name WHEN 'Editor' THEN 'Yes' ELSE 'No' END) AS Editor, MAX(CASE group_name WHEN 'Contributor' THEN 'Yes' ELSE 'No' END) AS Contributor, MAX(CASE group_name WHEN 'Viewer' THEN 'Yes' ELSE 'No' END) AS Viewer FROM users AS u LEFT OUTER JOIN user_groups AS g USING (user_id) GROUP BY u.user_id;
与其他一些品牌的 SQL 数据库不同,MySQL 不支持 PIVOT
或 CROSSTAB
的任何特殊语法。