我看到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); //下一个偏移量
不再按年龄排序返回的数据。如何在下一个查询中保留最后一种排序?
我是否必须传入一个变量来维护状态,或者数据库是否有一些函数来调用它的最后状态?
答案 0 :(得分:2)
您必须在每个请求中指定ORDER BY子句。
数据库系统优化的方式与客户端代码无关。
答案 1 :(得分:2)
数据库引擎生成的结果集在完成后就会被遗忘。每次查询数据库时,都必须提供排序顺序。
答案 2 :(得分:2)
除了将记录选择到临时表中,然后从该表中进行选择之外,您还必须在每个查询中指定ORDER BY。服务器不保留与先前查询有关的任何类型的状态。为什么在后续查询中重新指定ORDER BY子句是一个问题?
无论是使用临时表还是重新指定整个查询,都取决于应用程序的结构。
答案 3 :(得分:1)
SQL数据库不保证任何排序,您必须在每次选择调用时指定它。