我想选择一个数据集中的第10个,第20个和第50个条目,然后按列排序。实现这一目标的最佳途径是什么?
答案 0 :(得分:0)
我们假设我们有下表:
create table Test
(
value int
);
这是一个返回第一,第三和第六行的查询:
select value
from
(
select value, (select count(*) + 1 from Test t2 where t2.value < t1.value) as OrderId
from Test t1
) tbl
where tbl.OrderId in (1,3,6)
你可以尝试here。如果 Test 表中有重复项,则上面的解决方案可以返回超过3行。
<强>更新强>
如果您希望按照我的示例中value
以外的列进行排序,则应修改条件t2.value < t1.value
。一般表格为t2.COLUMN_NAME < t1.COLUMN_NAME
。
答案 1 :(得分:0)
最简单,最有效的方法是使用LIMIT/OFFSET:
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 9
UNION ALL
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 19
UNION ALL
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 49