ホームページ >データベース >mysql チュートリアル >すべての列をリストせずに MySQL 列を連結するにはどうすればよいですか?

すべての列をリストせずに MySQL 列を連結するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-25 05:27:29958ブラウズ

How to concatenate MySQL columns without listing all columns?

MySQL の列を効果的に連結する方法

* キーワードを使用して MySQL のすべての列を連結することは現実的ではありません。代わりに、結合するすべての列を明示的にリストする必要があります。

明示的な列連結

これを実現するには、CONCAT 関数を使用します。

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable

代わりに、CONCAT_WS を利用して null 値を省略することもできます。

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, '`'))

Complete Dynamic Query

これらの要素を使用して、動的クエリを構築できます。

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;

このクエリは、次のような文字列を生成します。

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable

この文字列を次のように実行します。

PREPARE stmt FROM @sql;
EXECUTE stmt;

このアプローチにより、手動で列をリストする必要がなくなり、動的でスケーラブルな連結が保証されます。

以上がすべての列をリストせずに MySQL 列を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。