类似:
SELECT * FROM userinfo WHERE user_id IN (5, 2, 1, 3, 4);
其中IN中的数字为userinfo表的主键(即user_id),查询出来的结果却是按照主键顺序而排列的。——1, 2, 3, 4, 5。
如何能够不改变查询顺序呢?我又不希望在代码中一个一个的按主键查询,然后将查到的结果挨个放到List中。有没有什么好办法能解决问题?求高人!数据库是MYSQL.

解决方案 »

  1.   

    SELECT * FROM userinfo WHERE user_id IN (5, 2, 1, 3, 4)
    order by user_id desc;不知道你要什么顺序
      

  2.   

    如果数量不是很多的话。。select * from I_PHONE_VISIT where sid = 5
    union 
    select * from I_PHONE_VISIT where sid = 2
    union 
    select * from I_PHONE_VISIT where sid = 1
    union 
    select * from I_PHONE_VISIT where sid = 3
    union 
    select * from I_PHONE_VISIT where sid = 4
    这样可以了。。不过数量多了就算了。
      

  3.   

    啊。。
    楼上的表名和字段名错了,是我刚才测试的。
    请无视吧。SELECT * FROM userinfo WHERE user_id =5
    union
    SELECT * FROM userinfo WHERE user_id =2
    union
    SELECT * FROM userinfo WHERE user_id =1
    union
    SELECT * FROM userinfo WHERE user_id =3
    union
    SELECT * FROM userinfo WHERE user_id =4
      

  4.   

    in执行的是全表扫描,因此结果会按主键排序。如果你要按in中的值排序,除了union别无他法。