2017-08-10 39 views
0
Code Category Name Type 
1  Beverage Coke Local 
1  Beverage Coke Master 
2  Beverage Sprite Local 
3  Beverage Royal Master 
0  Beverage Soda Local 
0  Beverage Coke Local 

我想根據代碼,類別和名稱選擇唯一值。如果有重複的條目(如表中的元素1和2),我想保留Type = Master的第二個元素。我怎樣才能在SQLite中使用SELECT?我目前的SQL如下所示:如何從基於列的副本中選擇一個

SELECT * FROM table WHERE Name LIKE ? AND category LIKE ? AND code LIKE ? 

但是這將包含重複項。使用GROUP BY應該消除重複,但我不知道如何選擇TYPE = Master。

+0

我使用SQLite的科爾多瓦感謝 –

回答

0

在SQLite的3.7.11或更高版本,可以use MAX() or MIN() to select rows from a group。 「大師」說到後的字母「本地」,所以你可以使用MAX():

SELECT Code, 
     Category, 
     Name, 
     MAX(Type) 
FROM MyTable 
WHERE ... 
GROUP BY Code, Category, Name; 
+0

。我想知道,如果我有一個類型等於「遠程」的第三個值。有沒有簡單的方法來選擇Type =「Master」? –

+0

是的,使用[CASE表達式](http://www.sqlite.org/lang_expr.html#case)。 –

1

爲「大師」>「本地」,你可以使用MAX函數返回兩個數值中較大的:

SELECT Code, category, Name, MAX(Type) 
FROM table 
WHERE Name LIKE ? AND category LIKE ? AND code LIKE ? 
相關問題