2014-04-09 84 views
0

拥有一个与列id和类型一致的SQL表。我只想选择一个类型的第一次出现而不使用WHERE,因为我不知道哪些类型是先发生的,而没有限制,因为我不知道有多少。SQL:受未知发生次数限制

id | type 
--------- 
1 | 1 
2 | 1 
3 | 2 
4 | 2 
5 | 2 

例如:

SELECT ID FROM表ORDER BY型应仅返回ID 1和2

SELECT ID FROM表ORDER BY型DESC应(+ +)(+?)只返回id 3,4和5

这可以通过标准和简单的SQL运算符来实现吗?

+1

的数据库系统它? – Szymon

+0

你可以发布你的预期输出以及 –

+0

也许这有助于:http://dba.stackexchange.com/q/62598/1822 –

回答

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; 
+0

因为他不知道与之比较的价值,所以OP希望它没有使用WHERE。 –

+0

。我的回答是:你不必事先知道它;您可以使用最小/最大值在where子句中对其进行评估。 –

+0

这会做的是在这种情况下,嵌套的WHERE是好的。谢谢! – ralftar