ホームページ > データベース > mysql チュートリアル > MySQL で行を列に効率的に変換するにはどうすればよいですか?

MySQL で行を列に効率的に変換するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-25 11:37:11
オリジナル
741 人が閲覧しました

How Can I Efficiently Convert Rows to Columns in MySQL?

mysql row transition変換詳細な説明

mysqlでは、テーブルの行が列に変換され、手順が必要です。

ステップ1:xとyの値を決定

最初に、視点表のx値(列)とy値(行)の列を決定します。この例では、HostIDは値として使用され、itemNameはX値として使用されます。

ステップ2:追加

を追加します

対応する値を含む各X値に新しい列を追加します。たとえば、x値a、b、およびcの場合、以下に示すように、ケースステートメントを使用して列a、b、およびcを追加します。 ステップ3:グループ化と集約

拡張テーブルはy値列によって支払われ(この例で)、新しい列は重合関数(合計など)を使用して集約されます。
<code class="language-sql">SELECT
  history.*,
  CASE WHEN itemname = "A" THEN itemvalue END AS A,
  CASE WHEN itemname = "B" THEN itemvalue END AS B,
  CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;</code>
ログイン後にコピー

ステップ4:Beautify(オプション)

必要に応じて、ニュートラル値(0など)を使用してヌル値を置き換えて、テーブルを読みやすくすることができます。

<code class="language-sql">SELECT
  hostid,
  SUM(A) AS A,
  SUM(B) AS B,
  SUM(C) AS C
FROM history_extended
GROUP BY hostid;</code>
ログイン後にコピー
その他の予防策

追加の列で使用される値は、特定のニーズに応じて調整できます。

使用される重合関数は、結果(カウント、最大など)から異なる場合があります。
<code class="language-sql">SELECT
  hostid,
  COALESCE(A, 0) AS A,
  COALESCE(B, 0) AS B,
  COALESCE(C, 0) AS C
FROM history_itemvalue_pivot;</code>
ログイン後にコピー

句ごとにグループ内の複数の列を推測することにより、複数の列をy値として使用できます。 このソリューションは、限られた数の視点テーブルに適していますが、多数の列を持つテーブルでは非常に複雑になります。

    以上がMySQL で行を列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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