SQLite中的DISTINCT子句

SQLite中的DISTINCT子句,sqlite,Sqlite,最近我发现SQLite不支持看似特定于postgresql的DISTINCT ON子句。例如,如果我有表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 使用: 该查询将始终返回t中的所有行,

最近我发现SQLite不支持看似特定于postgresql的DISTINCT ON子句。例如,如果我有表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
使用:


该查询将始终返回t中的所有行,因为t中的每个b都是select distinct b from t的一部分。也许你可以更清楚地说明你想做什么,并提供一些样本数据和预期结果?除非你解释为什么1,5在你的预期结果集中,而2,5不是,以及为什么正是这样,而不是相反,否则这将很难回答。任何解释都可以。最小值、最大值等。假设只有当这些数据有意义时,真正的查询才会在DISTINCT上需要额外的列—例如,对于相同的DISTINCT列,它的额外列是相同的。
  SELECT MIN(t.a) AS A,
         t.b
    FROM TABLE t
GROUP BY t.b
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)