Heim >Datenbank >MySQL-Tutorial >Wie kann ich benutzerdefinierte Feldwerte in SQL transponieren?
SQL-Transponierungstechniken für benutzerdefinierte Feldwerte
In SQL können Situationen auftreten, in denen Sie in Zeilen gespeicherte Daten transponieren müssen Formularspalten. Ein solches Beispiel ist, wenn Sie eine Tabelle wie die unten beschriebene haben:
================================================ | Id | UserId | FieldName | FieldValue | =====+========+===============+================| | 1 | 100 | Username | John Doe | |----+--------+---------------+----------------| | 2 | 100 | Password | pass123! | |----+--------+---------------+----------------| | 3 | 102 | Username | Jane | |----+--------+---------------+----------------| | 4 | 102 | Password | $ecret | |----+--------+---------------+----------------| | 5 | 102 | Email Address | [email protected] | ------------------------------------------------
Um diese Daten in ein Format zu transponieren, in dem die FieldNames zu Spaltenüberschriften werden und die FieldValues die entsprechenden Zeilendaten bilden, können Sie die nutzen Folgende SQL-Abfrage:
SELECT t.userid MAX(CASE WHEN t.fieldname = 'Username' THEN t.fieldvalue ELSE NULL END) AS Username, MAX(CASE WHEN t.fieldname = 'Password' THEN t.fieldvalue ELSE NULL END) AS Password, MAX(CASE WHEN t.fieldname = 'Email Address' THEN t.fieldvalue ELSE NULL END) AS Email FROM TABLE t GROUP BY t.userid
Damit dieser Ansatz jedoch effektiv funktioniert, müssten Sie CASE-Anweisungen für jeden erwarteten FieldName-Wert definieren. Um die Flexibilität zu erhöhen, sollten Sie die Implementierung der Prepared Statement-Syntax (dynamisches SQL) von MySQL zum dynamischen Generieren dieser CASE-Anweisungen in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWie kann ich benutzerdefinierte Feldwerte in SQL transponieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!