2012-02-28 82 views
0

擴展問題 Fastest way to find not null filed in sqlite優化SQLite的查詢

我有表結構

CREATE TABLE IF NOT EXISTS [app_status](
[id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , 
[status] TEXT DEFAULT NULL, 
[type] INTEGER 
) 

凡類型值既可以是一個或兩個。 首先,我想檢查是否沒有行的類型等於1,並且狀態爲非空。

它失敗我想檢查是否有沒有行類型等於2. 爲此我寫了兩個sql查詢。

SELECT 1 
FROM [app_status] 
WHERE [status] IS NOT NULL 
AND [type]=1 

如果它不返回任何行我觸發

SELECT 2 
FROM [app_status] 
WHERE [status] IS NOT NULL 
AND [type]=2 

有沒有辦法在一個查詢中合併這些條件。 返回一個如果有非空狀態的行,如果沒有返回則返回類型1 2非狀態類型爲2的任何行 否則返回0?

回答

2

爲什麼不:

SELECT COALESCE(min(type), 0) 
    FROM app_status 
WHERE status IS NOT NULL 
    AND type IN (1,2) 

你需要所有重複嗎?

+0

不,我想優先考慮1. – 2012-02-28 17:15:54

+1

@Vivek Goel:您是否嘗試過查詢?你期望什麼,並返回錯誤的結果? – Benoit 2012-02-28 17:17:19

+0

查詢完美謝謝。 – 2012-02-28 17:18:11