mysql自定义排序

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

但是,当我打印出来时,它会自动排序1,2,3,4,5。我们如何维护订单(2,4,1,5,3)而不改变数据库结构?

谢谢!

我问这个:

mysql order by issue

我得到的答案和所有的信用属于他们是:

您可以使用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;

?>
http://stackoverflow.com/questions/2175439/mysql-custom-sort

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:mysql自定义排序