2012-10-20 47 views
0

下面是數據的樣本,我有:SQLite的查詢一些數據篩選出有特殊條件

----------------------------------- 
ID | Item     | Value 
    1 | Carrot    | 0 
    2 | Carrot    | 1 
    3 | Peas     | 1 
    4 | Peas     | 2 
    5 | Peas     | 3 
    6 | Salad    | 0 
    7 | Salad    | 3 
    8 | Salad    | 5 
    9 | Corn     | 0 
----------------------------------- 

我想做一個查詢,其中以0值線出現,如果:

  • 它們是該項目的唯一價值
  • 有該項目

或另一種方式不止一個其他值說是他們不應該在結果,如果:

  • 有一個且只有一個同樣項目

注意,對(項,值)是我唯一的數據的其他價值。

所以對於數據樣本,查詢的結果應該是這樣的(僅第一行會消失):

----------------------------------- 
ID | Item     | Value 
    2 | Carrot    | 1 
    3 | Peas     | 1 
    4 | Peas     | 2 
    5 | Peas     | 3 
    6 | Salad    | 0 
    7 | Salad    | 3 
    8 | Salad    | 5 
    9 | Corn     | 0 
----------------------------------- 

什麼是做到這一點的最好和最有效的方法是什麼?

回答

3

您必須對數據進行分組的項目,這樣一種可能性是

SELECT ID, Item, Value 
FROM data 
WHERE Value <> 0 
OR Item IN 
    (SELECT Item FROM data 
    GROUP BY Item 
    HAVING COUNT(*) <> 2); 

See this SQLFiddle

+0

完美。 – Matthieu