2017-08-10 4 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の2番目の要素を保持します。 SQLiteでSELECTを使用するにはどうしたらいいですか?現在のSQLは次のようになります。列に基づいて重複するものから1つを選択する方法

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

感謝を使用しています。私は、 "Remote"と等しいTypeの3番目の値があるのだろうかと思っていました。 Type = "Master"を選択する簡単な方法はありますか? –

+0

はい、[CASE式](http://www.sqlite.org/lang_expr.html#case)です。 –

1

「マスター」>「ローカル」として、次の2つの値の大きい方を返すために、MAX関数を使用することができます。

SELECT Code, category, Name, MAX(Type) 
FROM table 
WHERE Name LIKE ? AND category LIKE ? AND code LIKE ? 
関連する問題