日期:2014-05-16  浏览次数:20687 次

想去改变这个排序,谁有办法,大家一起学习学习。
先创建表,如下:
SQL code

  CREATE TABLE old_temp_order (userid VARCHAR2(20) PRIMARY KEY,username VARCHAR2(20));



插入值:
SQL code

        INSERT INTO OLD_TEMP_ORDER (USERID, USERNAME) VALUES ('10120110514051', '第一');
        INSERT INTO OLD_TEMP_ORDER (USERID, USERNAME) VALUES ('10120110514052', '第二');
        INSERT INTO OLD_TEMP_ORDER (USERID, USERNAME) VALUES ('10120110514053', '第三');



我想得到如下顺序出来的内容
SQL code

10120110514053    第三
10120110514052    第二
10120110514051    第一        



我用union all可以得到结果,如下:
SQL code

         SELECT USERID, USERNAME FROM OLD_TEMP_ORDER WHERE USERID = '10120110514053'
         UNION ALL
         SELECT USERID, USERNAME FROM OLD_TEMP_ORDER WHERE USERID = '10120110514052'
         UNION ALL
         SELECT USERID, USERNAME FROM OLD_TEMP_ORDER WHERE USERID = '10120110514051'



但是我用sql
SQL code

SELECT * FROM OLD_TEMP_ORDER WHERE USERID IN ('10120110514053', '10120110514052', '10120110514051');


总是得不到想要的结果,而且无论In中的顺序如何变化,结果都是一样的,都不能改变我需要的,请讨论下如果这样查询IN的语法机制在哪里,为什么就出现不了我想得到的结果的,麻烦高手请教下,十分感谢!!!



------解决方案--------------------
用IN的时候,查询出来的结果,默认排序是按照表里的primary key排序的;
如果建表的,没设定PrimaryKey,那么默认排序则是按照往表里插入记录的顺充读取的。