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中文網其他相關文章!