按特定顺序选择特定行

5kgi1eie  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(255)

这个问题在这里已经有了答案

mysql按列表排序(1个答案)
11个月前关门了。
我有一个脚本(在php中),它通过一系列不同的比较来生成一个表中按行id排序的条目数组。然后我将数组内插到一个字符串中,并使用where来选择那些特定的行,但是我不知道如何按数组中的顺序对它们进行排序。

$order_array = [50,49,42,52,53,54,51,48,47]
$order_string = implode(',', $order_array);
// echo $order_string returns '50,49,42,52,53,54,51,48,47'
$sql_todo = "SELECT * FROM todo_list WHERE id IN ({$order_string})";
    if ($result_todo = mysqli_query($link, $sql_todo)) {
        while ($row_todo = mysqli_fetch_assoc($result_todo)) {

这将成功地选择所需的行,但它们的顺序与数组不同。我知道我还没有告诉它那样订购(所以它没有),但我不知道如何做到这一点。
谢谢你的时间,
塞思

bvjxkvbb

bvjxkvbb1#

你可以用这个 field() 功能:

"SELECT * FROM todo_list WHERE id IN ({$order_string}) ORDER BY FIELD(id, {$order_string})"
``` `field()` 返回列表中第一个参数的索引,可以直接用于排序。
旁注:您可能应该使用准备好的语句,而不是在查询字符串中串联值(如果您的值来自代码之外,这是必须的)。

相关问题