MySQL では、文字列を別のクエリの結果と連結することによって動的にカラム名を構築することが望ましい場合があります。 。このアプローチにより、データベース オブジェクトを生成する際の柔軟性とカスタマイズが可能になります。ただし、クエリ内で列名を直接連結すると、意図した結果が得られない可能性があります。
次の例を考えてみましょう。
<code class="sql">SELECT CONCAT('column', mytable.mycolumn) FROM table ...</code>
このクエリは、文字列 'column' を列 ' と連結しようとします。 「table」テーブルからの「mycolumn」。ただし、MySQL の動的カラム名の処理の制限により、予期した出力が提供されない場合があります。
この問題を解決するには、サーバー側のプリペアド ステートメントを利用して、文字列から SQL ステートメントを動的に構築して実行できます。次に、プリペアド ステートメントを使用してクエリ派生の列名を作成する方法を示す例を示します。
<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 ;</code>
この例では:
このアプローチにより、クエリ由来の列名をその場で作成できます。データベース操作に柔軟性とカスタマイズ性を提供します。
以上がMySQL でクエリ派生カラム名を動的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。