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 サイトの他の関連記事を参照してください。