MySQL でのすべてのカラムの連結: 代替アプローチ
MySQL では、* キーワードを使用してすべてのカラムを連結することは実現できません。すべての列の連結された値の文字列を取得するには、列名の明示的なリストが必要です。
明示的な列リスト:
最も簡単な方法は、個々の列を手動で連結することです。列:
SELECT CONCAT(col1, col2, col3, ....) FROM yourtable
CONCAT_WS 関数:
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, '`'))
最後に、これらの要素を組み合わせて動的クエリを作成できます。
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 サイトの他の関連記事を参照してください。