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

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

Patricia Arquette
リリース: 2024-11-09 10:56:02
オリジナル
449 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート