Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何按($str)订购_Mysql_Sql Order By - Fatal编程技术网

Mysql 如何按($str)订购

Mysql 如何按($str)订购,mysql,sql-order-by,Mysql,Sql Order By,当我从表中选择时,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

当我从表中选择时,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
提前谢谢

一种方法:

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;

对于不保证返回元组顺序的SQL,无法做到这一点。您必须按照应用程序中的顺序进行排序,或创建另一列,如下所示:

1 2 5412
2 4 6600
3 6 2200

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

问候,

Jason Posit

试试这个

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

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

SELECT * FROM table WHERE id in ($str) ORDER BY FIELD(id,$str)

你能用问题的形式来表达这个问题吗?您到底想实现什么?谢谢,但字符串中的值是可变的。字符串中的值将更改,我以前不知道。非常感谢,我已经解决了我的问题,我的代码是:从表中选择*id($str)按字段排序(id,$str),欢迎!如果这对你有帮助,那么一定要接受答案