寻求在特定条件下执行查询以从另一个表中获取数据。
喜欢
select field1, field2.... IF(fieldX=3,select value from sub_table where cat_id = 3 order by id desc limit 0,1, NULL) from abc ;
if中的查询是有效的。 我习惯于实现条件没有任何问题,但这些都是针对某些静态值或字段。但是,这是我第一次尝试获取选择的结果,如果并且无法执行此操作。
这种情况是因为对于'fieldX'的某些特定值,我需要从另一个表中获取记录。
此致 朱奈德
答案 0 :(得分:2)
将内部选择包裹在()
中IF(fieldX=3, (select value from sub_table where cat_id = 3 order by id desc limit 0,1), NULL)
答案 1 :(得分:0)
为什么不使用左连接并使用fieldX=3
作为连接条件?如果fieldX与3不同,则sql用NULL
select a.field1, a.field2, sub.value
from abc a
left join
(
select value from sub_table
where cat_id = 3
limit 0,1
) sub
on a.fieldX = 3
或者,如果你想获得相应值的所有行(我看到你有cat_id = 3
和fieldX = 3
,基本上是cat_id = fieldX
),只需使用一个简单的连接。不需要使用复杂的if构造。 sql是为了快速有效的连接而构建的:
select a.field1, a.field2, sub.value
from abc a
left join sub_table sub
on a.fieldX = sub.cat_id
但请注意,当fieldX和cat_id(非唯一cat_id
)之间存在更多匹配时,第二个查询将返回多行
答案 2 :(得分:0)
select fields... from sub_table st
where st.idSubTable in(
Select IF(fieldX=3
,(
select st.idSubTable from sub_table where cat_id = 3 order by id desc limit 0,1
),
NULL)
from abc);
它将解决您的问题。