使用ORDER BY时按索引选择SQL

时间:2014-11-15 09:50:59

标签: sql sqlite sql-order-by

我想选择一个数据集中的第10个,第20个和第50个条目,然后按列排序。实现这一目标的最佳途径是什么?

2 个答案:

答案 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