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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 10:56:02379ブラウズ

How to Execute SQL Queries with Dynamic Table Names in MySQL?

SQL ステートメント内の動的テーブル名

動的テーブル名を使用して SQL クエリを実行するのは困難な場合があります。次の例を考えてみましょう。

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

このクエリは次のエラーをスローします。

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@table' at line 1

準備されたステートメントを使用した解決策

の推奨アプローチ動的テーブル名を処理するには、準備されたステートメントを使用します。プリペアド ステートメントを使用すると、適切な構文とセキュリティを確保しながら、テーブル名を動的に指定できます。 MySQL では、PREPARE ステートメントと EXECUTE ステートメントを次のように使用できます。

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

CONCAT() 関数は、テーブル名の文字列を動的に連結するために使用されます。次に、準備されたステートメントが実行され、構文エラーが回避されます。

削除クエリへの適用

同じアプローチを削除クエリにも拡張できます。

SET @qry2:= concat('DELETE FROM ',@table,' where>

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

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