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