mysql自定义排序

我有这样的查询: SELECT * FROM table WHERE id IN (2,4,1,5,3);

但是,当我打印出来时,它会自动进行1,2,3,4,5的排序。我们如何在不更改数据库结构的情况下保持顺序(2,4,1,5,3)?

谢谢!

回答:

我问这个:

mysql按问题排序

我得到的答案和所有功劳归于他们:

您可以使用CASE运算符指定顺序:

SELECT * FROM table

WHERE id IN (3,6,1,8,9)

ORDER BY CASE id WHEN 3 THEN 1

WHEN 6 THEN 2

WHEN 1 THEN 3

WHEN 8 THEN 4

WHEN 9 THEN 5

END

在PHP中,你可以像这样:

<?php

$my_array = array (3,6,1,8,9) ;

$sql = 'SELECT * FROM table WHERE id IN (3,6,1,8,9)';

$sql .= "\nORDER BY CASE id\n";

foreach($my_array as $k => $v){

$sql .= 'WHEN ' . $v . ' THEN ' . $k . "\n";

}

$sql .= 'END ';

echo $sql;

?>

以上是 mysql自定义排序 的全部内容, 来源链接: utcz.com/qa/416705.html

回到顶部