ホームページ >データベース >mysql チュートリアル >MySQL クエリ実行のためにカラム名を動的に連結できますか?

MySQL クエリ実行のためにカラム名を動的に連結できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-24 04:43:301106ブラウズ

Can Column Names Be Concatenated Dynamically for MySQL Query Execution?

MySQL でのクエリ実行のために列名を動的に連結する

問題ステートメント:

MySQL の場合、列名の最初の部分が文字列で、2 番目の部分が別のクエリから取得された数値であるクエリ内で列名を連結することが望ましいです。

試行された解決策:

次の SQL ステートメントは連結を試みます:

<code class="sql">SELECT CONCAT('column', mytable.mycolumn) FROM table ...</code>

しかし、このアプローチでは望ましい結果が得られず、連結は効果がないようです。

解決策:

これまでの考えに反して、サーバー側のプリペアド ステートメントを使用して MySQL でカラム名を動的に構築することは実際に可能です。次のアプローチを検討してください。

<code class="sql">set @query := (
  select concat(
    "select",
      group_concat(concat("\n  1 as ", column_name) separator ','),
    "\nfrom dual")
  from information_schema.columns
  where table_name = 'columns')
;

prepare s1 from @query
;
execute s1
;
deallocate prepare s1
;</code>

このコードは、列テーブルの内容に基づいてクエリ文字列を動的に構築します。次に、prepare ステートメントを使用してクエリ文字列がコンパイルされ、その後、execute ステートメントを使用して実行できます。

以上がMySQL クエリ実行のためにカラム名を動的に連結できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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