我有以下代码:
set @a='city_name';
select place_names from table1 tbl1 inner join table2 tbl2
on tbl1.city_name = tbl2.city_name
在这里,我需要将变量@a
与别名tbl1
一起使用。类似于tbl1.@a
和tbl2.@a
。
我该怎么做?
提前致谢。
答案 0 :(得分:2)
语法(包括列名和其他标识符)必须在解析语句时修复。
将用户变量用作SQL语法的一部分的唯一方法是使用预准备语句,这样您就可以在解析之前将SQL语句构建为字符串。
SET @a='city_name';
SET @sql=CONCAT('select place_names from table1 tbl1 inner join table2 tbl2
on tbl1.', @a, ' = tbl2.', @a);
PREPARE stmt1 FROM @sql;
EXECUTE stmt;