我不相信MySQL支持动态SQL。你可以做一些类似但不同的“准备”语句。
以下是一个例子:
mysql> PREPARE stmt FROM
-> 'select count(*)
-> from information_schema.schemata
-> where schema_name = ? or schema_name = ?';Query OK, 0 rows affected (0.00 sec)Statement prepared
mysql> EXECUTE stmt
-> USING @schema1,@schema2+----------+| count(*) |+----------+| 2 |+----------+1 row in set (0.00 sec)mysql>
DEALLOCATE PREPARE stmt;
准备好的语句通常用于查看给定查询的执行计划。因为它们是用执行命令和SQL可以分配给一个变量,您可以近似于一些与动态SQL相同的行为。
这里有个好东西链接关于这一点:
不要忘记释放stmt用最后一行!
祝好运!