Heim >Datenbank >MySQL-Tutorial >Wie kann ich benutzerdefinierte Feldwerte in SQL transponieren?

Wie kann ich benutzerdefinierte Feldwerte in SQL transponieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 02:10:40237Durchsuche

How Can I Transpose User-Defined Field Values in SQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn