すべての MySQL 列の動的連結
MySQL では、* ワイルドカードを使用したすべての列の連結はサポートされていません。代わりに、CONCAT() または GROUP_CONCAT() 関数で各列名を明示的に指定する必要があります。
明示的な列連結:
CONCAT() を使用できます。特定の列を連結する関数:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
または、CONCAT_WS() を使用して、ヌル値をスキップして、指定された区切り文字で列を連結します:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
動的列連結:
手動で列名を指定することを回避するには、動的クエリを使用して、information_schema.columns テーブルからすべての列名を取得できます。
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
次に、GROUP_CONCAT() を使用して結合します。これらの列名:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
これにより、次のような引用符で囲まれた列名のカンマ区切りリストが作成されます。
<code class="sql">`col1`,`col2`,`col3`,`col4`,...</code>
これにより、連結する動的クエリを作成できます。すべての列:
<code class="sql">SET @sql = CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;' );</code>
最後に、動的クエリを実行します:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
以上がすべての MySQL 列を動的に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。