Mysql在IF条件下选择

时间:2011-06-21 15:42:25

标签: mysql select if-statement conditional-statements

寻求在特定条件下执行查询以从另一个表中获取数据。

喜欢

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'的某些特定值,我需要从另一个表中获取记录。

此致 朱奈德

3 个答案:

答案 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 = 3fieldX = 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);

它将解决您的问题。