先创建表,如下:
- 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,那么默认排序则是按照往表里插入记录的顺充读取的。