2

当我从表中选择我有表时,我遇到了 orderby 的问题

ID        value
1         2201
2         5412
3         3300
4         6600
5         7700
6         2200
-------------------
My sql query:
SELECT * FROM table WHERE id in ('2','4','6','1','3')

结果是:

ID        value
6         2200
1         2201
3         3300
2         5412
4         6600

而且我不需要排序,我只想在字符串中显示位置

ID        value
2         5412
4         6600
6         2200
1         2201
3         3300

提前致谢!

4

4 回答 4

0

我已经解决了我的问题,我的代码是:

SELECT * FROM table WHERE id in ($str) ORDER BY FIELD(id,$str)
于 2013-04-11T16:51:10.327 回答
0

一种方法:

SELECT * FROM table 
WHERE id IN (2,4,6,1,3)
ORDER BY ID = 2 DESC, ID = 4 DESC, ID = 6 DESC, ID = 1 DESC, ID = 3 DESC;
于 2013-04-11T15:58:19.620 回答
0

SQL 无法做到这一点,因为它不能保证返回元组的顺序。您必须根据应用程序中的顺序进行排序,或者创建另一个列,如下所示:

1 2 5412
2 4 6600
3 6 2200

etc...

并按新列排序。否则,应用程序中的代码将取决于您用来调用 sql 的语言。

问候,

杰森·波西特

于 2013-04-11T15:59:44.797 回答
0

尝试这个

   SELECT * FROM table1 WHERE id in ('2','4','6','1','3')
   order by FIELD(id, '2', '4', '6', '1', '3')

在这里演示

于 2013-04-11T16:01:10.053 回答