2013-06-20 52 views
0

我想製作一個條件SQL。我有一個表「users」,它有兩列(id, status)如何製作條件SQL語句

我需要根據他們的狀態搜索用戶ID。

例如: 每5秒,我從數據庫中按照下面的描述中查詢(阿賈克斯):

讓我們說,我有我的牆下面的結果(在HTML):

id1: 1 
status2: "A" 

id2: 2 
status2: "B" 

我需要從表「用戶」獲取ID,但如果我的牆上的狀態沒有改變,則從數據庫中排除ID。

因此算法應該是:

Get all IDs from table "users" but exclude the IDs (1,2) from database 
(if and only if) their status = ("A", "B"). 

簡單地說,我需要檢索所有ID包括標識(1,2)。但對於ID(1,2):我需要檢索它們以防它們的相應狀態分別不等於(「A」,「B」)。

但是對於(1,2)像(3,4,5,...)以外的ID,我需要在沒有任何條件的情況下檢索它們。

如果解決方案在數據庫記錄非常龐大時提供出色的性能,並且每隔5秒檢查一次,我將不勝感激。

回答

0

如果我理解正確的話,你想是這樣的:

WHERE (id IN (1, 2) AND status NOT IN ('A', 'B')) 
    OR (id NOT IN (1, 2)) 

這可以歸結爲較短的(但我想,少可讀性):

WHERE id NOT IN (1, 2) OR status NOT IN ('A', 'B') 
0

是什麼您正在查找:

SELECT id FROM table1 WHERE id NOT IN 
(SELECT id FROM table1 WHERE id IN (1,2) AND status IN ('A','B'))