2011-10-12 40 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