拥有一个SQL表,列id和类型一致。我想在不使用WHERE的情况下仅选择一种类型的第一次出现,因为我不知道哪些类型是野生的,而且没有LIMIT因为我不知道有多少类型。
id | type
---------
1 | 1
2 | 1
3 | 2
4 | 2
5 | 2
E.g:
SELECT id FROM table ORDER BY type(+?)应该只返回id 1和2
SELECT id FROM FROM ORDER BY类型DESC(+?)应该只返回id 3,4和5
可以通过标准和简单的SQL运算符实现吗?
答案 0 :(得分:0)
这很容易。您必须使用where子句并评估其中的最小类型。
SELECT *
FROM mytable
WHERE type = (select min(type) from mytable)
ORDER BY id;
编辑:如果您想获得最大类型记录,请使用max()。
编辑:如果类型不是如您的示例中那样提升,则必须获取最小/最大ID的类型,而不是获取最小/最大类型:
SELECT *
FROM mytable
WHERE type = (select type from mytable where id = (select min(id) from mytable))
ORDER BY id;