Sqlite,如何在“case when”之后选择数据

时间:2015-01-14 21:13:47

标签: sqlite

这里是MyTbl1

id (integer pk ai)
name (text char 25)
phone (int)

MyTbl2

v1 (text char25)
v2 (text char 25)

我想要提出请求,如:

select if exists id=1 in MyTbl1 if id=1 exists then select v1 from Mytbl2 if not exists return 0.

我试试这个:

select case when exists(select id from MyTbl1 where id=1) then (select v1 from MyTbl2) else 0 end;

它不起作用(

2 个答案:

答案 0 :(得分:0)

使用where exists

如果在Mytbl1

中存在id =`的行,你也会从MyTbl2获取所有行
select v1 from MyTbl2 t2
where exists 
( select 1 from MyTbl1 t1
  where t2.id =1
)

答案 1 :(得分:0)

此查询将带回两个值:v1和id。 但是,如果它是<> 1,则id将为null(因为它不会通过join子句)

select v1 , id
from MyTbl2 t2
left join MyTbl1 t1 on id =1

您可以检查id是否为null,如果是,则可以假设v1为零。这可以按如下方式完成:

select case when id is null the 0 else v1 end
from MyTbl2 t2
left join MyTbl1 t1 on id =1