如何根据列从重复项中选择一个

时间:2017-08-10 08:44:13

标签: sqlite group-by duplicates

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。

2 个答案:

答案 0 :(得分:1)

As" Master" > " Local",您可以使用MAX函数返回两个值中较大的一个:

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

答案 1 :(得分:0)

在SQLite 3.7.11或更高版本中,您可以use MAX() or MIN() to select rows from a group。 "万事达"来自" Local"在字母表中,所以你可以使用MAX():

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