在下一个查询中维护SQL排序状态?

时间:2009-07-30 18:15:34

标签: sql c

我看到this post,但不明白这是否是同一个问题。

我的数据库可以在每列上进行排序。对数据库进行排序后,如何在下次查询后维护该顺序?

例如:
按年龄排序db:
    sprintf(sql,“select * from Customer_Table ORDER BY age_ID LIMIT 100 OFFSET%s;”,offset);

然后用户查看接下来的100个客户

sprintf(sql,“select * from Customer_Table LIMIT 100 OFFSET%s;”,offset); //下一个偏移量

不再按年龄排序返回的数据。如何在下一个查询中保留最后一种排序?

我是否必须传入一个变量来维护状态,或者数据库是否有一些函数来调用它的最后状态?

4 个答案:

答案 0 :(得分:2)

您必须在每个请求中指定ORDER BY子句。

数据库系统优化的方式与客户端代码无关。

答案 1 :(得分:2)

数据库引擎生成的结果集在完成后就会被遗忘。每次查询数据库时,都必须提供排序顺序。

答案 2 :(得分:2)

除了将记录选择到临时表中,然后从该表中进行选择之外,您还必须在每个查询中指定ORDER BY。服务器不保留与先前查询有关的任何类型的状态。为什么在后续查询中重新指定ORDER BY子句是一个问题?

无论是使用临时表还是重新指定整个查询,都取决于应用程序的结构。

答案 3 :(得分:1)

SQL数据库不保证任何排序,您必须在每次选择调用时指定它。