查询输出,是另一个查询的输入 - 不工作
问题描述:
我想使用一个查询的返回作为另一个查询的输入。查询输出,是另一个查询的输入 - 不工作
当我单独运行他们,他们工作得很好,但是当我在一个将它们组合起来,这是行不通的。
个人查询是: -
select ja.id
from job_applications ja
join users u
on u.id = ja.user_id
where u.email='[email protected]'
order by ja.updated_at desc
limit 1
输出是
308480
,当我使用这个值作为输入另一个查询得到我想要的结果
select * from delayed_jobs dj
where handler like "%308480%"
但是,现在当我试图运行它作为一个单一的查询它不起作用(我得不到输出)
select * from delayed_jobs dj
where handler like
"%(select ja.id
from job_applications ja
join users u
on u.id = ja.user_id
where u.email='[email protected]'
order by ja.updated_at desc
limit 1)%"
请帮助。
答
你不能像这样的语句里面执行SQL代码。你需要通过连接在一起的结果是这样产生类似表达:
where handler like
concat('%', (select ja.id
from job_applications ja
join users u
on u.id = ja.user_id
where u.email='[email protected]'
order by ja.updated_at desc
limit 1),
'%')
答
对于动态SQL,你应该使用存储过程,就像在mellamokb他的回答解释。但是,您的查询不是真正动态的,因此您可以使用子查询。例如:
select * from delayed_jobs dj
where handler like
(select concat('%', ja.id, '%')
from job_applications ja
join users u
on u.id = ja.user_id
where u.email='[email protected]'
order by ja.updated_at desc
limit 1)
UPDATE
抱歉,显然我误解mellamokb的答案......的确是我的一样......
+0
是的,你的解决方案也可以运行。非常感谢你们 – Amey
您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近“其中处理器一样 CONCAT(”%正确的语法手册第1行 – Amey
对不起“(选择ja.id从job_applications ”我的坏它的作品!伟大谢谢 – Amey
将此标记为答案,一旦5分钟计数器(由stackoverflow设置)通过 – Amey