我正在寻找在SQL Server中类似这样的:PostgreSQL等同于TOP n WITH TIES:LIMIT“with ties”?
SELECT TOP n WITH TIES FROM tablename
我知道PostgreSQL约LIMIT
,但确实上述存在的相同呢?我只是好奇,因为它会每次为我节省额外的查询。
如果我有一个表Numbers
与属性nums
:{10, 9, 8, 8, 2}
。我想要做的事,如:
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
它应该返回{10, 9, 8, 8}
,因为它需要的前3名加上额外8
,因为它关系另一个。
为什么这样复杂? rank()函数将完成所需的功能? – 2012-03-09 08:01:33
@a_horse_with_no_name:你绝对是对的(起初我是这样)我的第二个考虑是不需要的。 – 2012-03-09 08:06:53
@Erwin:这很好(http://data.stackexchange.com/stackoverflow/query/63525/top-n-with-ties),我不知道stackoverflow有一个内置的模块来运行查询:-)虽然10,9,8,8,2,10,10,10,9的输出是不正确的,如果你需要得到前3(10,9,8)并列出所有10,9,8;应该是:10,10,9,8,8。对于某些给定的问题,'WITH TIES'可能不正确:http://stackoverflow.com/questions/2611822/distinct-with-count-and-sql-server-2005/2612456#2612456 – 2012-03-09 08:49:23