ユーザー定義フィールド値の SQL 転置テクニック
SQL では、行に格納されているデータを転置する必要がある状況に遭遇することがあります。列を形成します。そのような例の 1 つは、以下で説明するようなテーブルがある場合です。
================================================ | 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] | ------------------------------------------------
このデータを、FieldName が列ヘッダーになり、FieldValue が対応する行データを形成する形式に転置するには、次の SQL クエリ:
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
ただし、このアプローチを効果的に機能させるには、予想される FieldName 値ごとに CASE ステートメントを定義する必要があります。柔軟性を高めるには、これらの CASE ステートメントを動的に生成するための MySQL の Prepared Statement (動的 SQL) 構文の実装を検討してください。
以上がSQL でユーザー定義のフィールド値を転置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。