ホームページ  >  記事  >  データベース  >  MySQL で動的に生成されたテーブル名を使用して SQL クエリを実行するにはどうすればよいですか?

MySQL で動的に生成されたテーブル名を使用して SQL クエリを実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-07 15:57:03811ブラウズ

How to Execute SQL Queries with Dynamically Generated Table Names in MySQL?

MySQL クエリでの動的テーブル名の使用

MySQL では、動的に生成されたテーブル名を使用して SQL クエリを実行すると、エラーが発生する可能性があります。これを克服するには、このようなシナリオを処理するための安全かつ効率的な方法を提供するプリペアド ステートメントを利用できます。

提供されたコード内:

SET @id := '47';
SET @table := @id+'_2013_2014_voucher';
SELECT * FROM @table;
Delete FROM @table where>

MySQL がそうでないためにエラーが発生します。 「@table」はクエリ内で有効なテーブル名として直接認識されます。

これを解決するには、プリペアド ステートメントを使用して、テーブル名に基づいてクエリを動的に構築できます。次のコードは、これを実現する方法を示しています。

SET @id := '47';
SET @table := concat(@id,'_2013_2014_voucher');
set @qry1:= concat('select * from ',@table);
prepare stmt from @qry1 ;
execute stmt ;

MySQL では、文字列の連結に「concat」関数が使用されます。これを使用して、プリペアド ステートメント「@qry1」内のテーブル名を構築します。

プリペアド ステートメントが作成されたら、「execute stmt」コマンドを使用して実行できます。このアプローチにより、構文エラーが発生することなくテーブル名を動的に生成し、クエリを実行できます。

以上がMySQL で動的に生成されたテーブル名を使用して SQL クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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