grigoryvp
grigoryvp

Reputation: 42593

DISTINCT clause in SQLite

Recently i found that SQLite don't support DISTINCT ON() clause that seems postgresql-specific. For exeample, if i have table t with columns a and b. And i want to select all items with distinct b. Is the following query the only one and correct way to do so in SQLite?

select * from t where b in (select distinct b from t)

Sample data:

a | b
__|__
1   5
2   5
3   6
4   6

What i expect in return:

a | b
__|__
1   5
3   6

Upvotes: 9

Views: 15711

Answers (2)

Solimo
Solimo

Reputation: 121

sqlite> SELECT * FROM t GROUP BY b;
2|5
4|6
(for each b: one (unpredictable) value of a)

sqlite> SELECT * FROM (SELECT * FROM t ORDER BY a DESC) GROUP BY b;
1|5
3|6
(for each b: the row with min a)

sqlite> SELECT * FROM (SELECT * FROM t ORDER BY a ASC) GROUP BY b;
2|5
4|6
(for each b: the row with max a)

Upvotes: 12

OMG Ponies
OMG Ponies

Reputation: 332731

Use:

  SELECT MIN(t.a) AS A,
         t.b
    FROM TABLE t
GROUP BY t.b

Upvotes: 11

Related Questions