ホームページ > データベース > mysql チュートリアル > SQL でユーザー定義のフィールド値を転置するにはどうすればよいですか?

SQL でユーザー定義のフィールド値を転置するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-05 02:10:40
オリジナル
200 人が閲覧しました

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

ユーザー定義フィールド値の 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート