MySQL のすべての列を動的に連結する方法

Susan Sarandon
リリース: 2024-10-24 18:35:26
オリジナル
673 人が閲覧しました

How to Dynamically Concatenate All Columns in MySQL

MySQL での列の連結: 動的アプローチの詳細

* キーワードを使用して MySQL テーブル内のすべての列を連結することは現実的ではありません。これを実現するには、各列を明示的にリストする必要があります。ただし、列が多数ある場合、このプロセスは面倒になる可能性があります。列の値に動的にアクセスするための別の方法を検討してみましょう。

列を手動で連結する

特定の列を連結するには、CONCAT 関数を使用できます。以下に示すように、必要な列を指定するだけです。

SELECT CONCAT(col1, col2, col3, ...) FROM yourtable
ログイン後にコピー

効率的な連結のための CONCAT_WS の使用

NULL 値の干渉を防ぐには、CONCAT_WS の使用を検討してください。

SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable
ログイン後にコピー

列名の動的生成

手動で列名を指定することが現実的でない場合は、動的クエリを利用してテーブル内のすべての列名を取得できます。

SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema`=DATABASE() AND `table_name`='yourtable';
ログイン後にコピー

このクエリは、GROUP_CONCAT を使用して連結できる列名のリストを生成します。

GROUP_CONCAT(CONCAT('`', column_name, '`'))
ログイン後にコピー

動的クエリの要素の結合

これで、必要なコンポーネントをすべて準備したら、動的クエリを作成しましょう。

SELECT
  CONCAT(
    'SELECT CONCAT_WS(\'\',',
    GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
    ') AS all_columns FROM yourtable;')
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() AND `table_name`='yourtable'
INTO @sql;
ログイン後にコピー

このクエリは、@sql 変数を目的の連結クエリに設定します。

PREPARE stmt FROM @sql;
EXECUTE stmt;
ログイン後にコピー

このコードを実行すると、動的にクエリを実行できます。テーブル内のすべての列を連結します。実際の例については、提供されているフィドルを参照してください。

以上がMySQL のすべての列を動的に連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!