ホームページ  >  記事  >  データベース  >  すべての MySQL 列を動的に連結するにはどうすればよいですか?

すべての MySQL 列を動的に連結するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-24 18:38:22965ブラウズ

How to Dynamically Concatenate All MySQL Columns?

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

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