SQLite中的DISTINCT子句
最近我发现SQLite不支持看似特定于postgresql的DISTINCT ON子句。例如,如果我有表t和列a和b。我想选择所有带有不同b的项目。在SQLite中,以下查询是唯一正确的方法吗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中的所有行,
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)