问题定义
我有一个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
或EACH组的某些汇总功能。但是,我不想汇总行!
子查询
我还可以通过子查询指定组:
SELECT *
FROM table
WHERE criteria = 1 AND
group = (
SELECT group
FROM table
WHERE criteria = 1
ORDER BY group ASC
LIMIT 1
);
这是可行的,但是与往常一样,子查询是混乱的。特别是,这需要两次为
WHERE
指定我的criteria
子句。当然,必须有一种更清洁的方法来执行此操作。 最佳答案
您可以尝试以下查询:
SELECT *
FROM table
WHERE criteria = 1
AND group = (SELECT MIN(group) FROM table)
ORDER BY value;
关于sql - 选择第一组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32144425/