Предложение DISTINCT в SQLite - PullRequest
7 голосов
/ 14 июня 2010

Недавно я обнаружил, что SQLite не поддерживает предложение DISTINCT ON(), которое кажется специфичным для postgresql. Например, если у меня есть таблица t со столбцами a и b. И я хочу выбрать все элементы с отличным b. Является ли следующий запрос единственным и правильным способом сделать это в SQLite?

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

Пример данных:

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

Что я ожидаю взамен:

a | b
__|__
1   5
3   6

Ответы [ 2 ]

11 голосов
/ 22 июля 2011
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)
8 голосов
/ 14 июня 2010

Использование:

  SELECT MIN(t.a) AS A,
         t.b
    FROM TABLE t
GROUP BY t.b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...