我的grails控制器上有以下两个SQL查询:
def query1 = sql.rows("select abc from table_one where cond = 1")
query1的返回结果为我提供了[{abc=5}]
def query2 = sql.rows("select req from table_two where abc = " +query1)
我在尝试运行query2时出错,我不明白为什么。
abc
和table_one
中都存在列名table_two
,我正在尝试从abc
获取table_one
的值,其中{{1} },并将其分配给变量query1。
并且使用query2,我尝试从cond = 1
获取req
的值,其中table_two
中abc
的值等于query1的值。
对此有何帮助?
来自query2的错误消息:
table_two
答案 0 :(得分:1)
为什么不使用类似以下查询的内容:
select table_two.req
from table_one,
table_two
where table_one.cond = 1
and table_one.abc = table_two.abc
像这样加入表允许你在一个查询中完成它,这通常更高效,更正确(即数据库表在两个查询之间不会改变)。
答案 1 :(得分:0)
您使用INNER JOIN
select b.req
from table_one a
INNER JOIN table_two b
ON a.abc = b.abc
where a.cond = 1
以下语法为ANSI SQL-92
。