2011-10-12 76 views
8

如何在SQLite中编写IF EXISTS如下面的查询所示?我在某处读到SQL语句中不存在IF子句。什么会是更好的选择呢?SQLite中IF存在子句

if exists (select username from tbl_stats_assigned where username = 'abc') 
    select 1 as uname 
else 
    select 0 as uname 
+0

您将需要一个包含所有用户名(无论是否已分配)的表(在本例中为列出所有用户的表)。您无法获得结果集中返回的记录,该值不存在于数据库某处的某个表中。 –

+0

谢谢拉里。在这里,我不试图检索记录,只是检查是否找到了匹配。 – thinkster

+1

然后以任何你用来与数据库交谈的语言对该表执行SELECT语句。检查返回结果集以确定它是否有行。没有行表示表中没有用户。 –

回答

16

只要做到这一点的标准SQL的方式:

select exists(
    select 1 
    from tbl_stats_assigned 
    where username = 'abc' 
); 

当然假设你10实际上是布尔值(SQLite的代表与一个和零就像MySQL的)。

这应该在任何SQL数据库中工作,有些甚至有特殊的优化来支持该成语。

+0

谢谢你的工作! – thinkster