在MySQL中编写动态查询时出错

时间:2013-05-16 18:20:28

标签: mysql database rdbms sequelpro

我是RDBMS的新手,我想从五个表中的一个获取一行,表的名称是另一个表的一个字段的值。所以我试图将值存储在一个查询中的一个变量中,然后在名称存储在变量中的表中再次使用该值查询。我在MySQL中编写查询。我在语法上遇到错误。

这是我写的查询语句。

DECLARE @vcTemp VARCHAR(40)
SELECT unit_test_result.*, @vcTemp = unit_test.name
  FROM unit_test_result, unit_test
  WHERE unit_test_result.test_run_id = 3 && unit_test.id = unit_test_result.unit_test_id
SELECT @vcTemp.* FROM @vcTemp

但我收到以下错误:

  
    

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'DECLARE @vcTemp VARCHAR(40)附近使用正确的语法     在第1行选择unit_test_result。*,@ vcTemp = unit_test.name'

  

有人可以帮我解释一下语法吗?感谢。

1 个答案:

答案 0 :(得分:0)

SQL不支持动态表名。如果这些查询是由某个程序以其他语言(即PHP脚本)运行的,那么最简单的方法就是执行两个查询 - 一个用于获取表名,另一个用于获取实际数据。

可以使用存储过程执行您想要的操作,但是,如果您被限制在MySQL中。这是一个例子:http://forums.mysql.com/read.php?98,126506,126598#msg-126598