查询输出,是另一个查询的输入 - 不起作用

时间:2011-09-27 20:04:50

标签: mysql sql input

我想使用一个查询的返回作为另一个查询的输入。

当我单独运行它们时,它们可以正常工作,但是当我将它们组合在一起时,它不起作用。

个别查询是: -

select ja.id 
from job_applications ja 
join users u 
on u.id = ja.user_id 
where u.email='xxxxx@gmail.com' 
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='xxxxx@gmail.com' 
   order by ja.updated_at desc
   limit 1)%"

请帮忙。

2 个答案:

答案 0 :(得分: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='xxxxx@gmail.com' 
        order by ja.updated_at desc
        limit 1),
    '%')

答案 1 :(得分:0)

对于动态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='xxxxx@gmail.com' 
       order by ja.updated_at desc
       limit 1)

<强>更新

抱歉,显然我误解了mellamokb的答案......确实和我的一样......