【发布时间】:2015-08-21 15:44:16
【问题描述】:
问题定义
我有一个如下所示的 SQL 查询:
SELECT *
FROM table
WHERE criteria = 1
ORDER BY group;
结果
我明白了:
group | value | criteria
------------------------
A | 0 | 1
A | 1 | 1
B | 2 | 1
B | 3 | 1
预期结果
但是,我想将结果限制在第一组(在本例中为 A)。即,
group | value | criteria
------------------------
A | 0 | 1
A | 1 | 1
我尝试过的
分组方式
SELECT *
FROM table
WHERE criteria = 1
GROUP BY group;
我可以使用GROUP BY 子句聚合组,但这会给我:
group | value
-------------
A | 0
B | 2
或每个组的某些聚合函数。但是,我不想聚合这些行!
子查询
我也可以通过子查询指定分组:
SELECT *
FROM table
WHERE criteria = 1 AND
group = (
SELECT group
FROM table
WHERE criteria = 1
ORDER BY group ASC
LIMIT 1
);
这行得通,但一如既往,子查询很混乱。特别是,这需要为criteria 指定我的WHERE 子句两次。当然必须有一种更清洁的方法来做到这一点。
【问题讨论】:
标签: sql sqlite subquery correlated-subquery