我不相信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用最后一行!

祝好运!