php - 在 mysql 中使用 WHERE 和 IN 时数组的排序问题

标签 php mysql arrays sorting

我有一个像这样的简单 mysql 查询。 SELECT name,cat_id FROM table WHERE cat_id IN (67,65,66);

但是我在以正确的顺序返回结果时遇到问题。

    [0] => Array
        (
            [cat_name] => name 1

            [cat_id] => 65
        )

    [1] => Array
        (
            [cat_name] => name 2
            [cat_id] => 66
        )

    [2] => Array
        (
            [cat_name] => name 3
            [cat_id] => 67
        )

我需要按照放入 sql 语句中的 cat_id 对它们进行排序。

67,然后 65,然后 66。

但它总是希望按顺序 65、66、67 返回结果。

有人可以帮我解决这个问题吗?我宁愿以正确的顺序获得结果,也不愿使用 php 来操作数组。

最佳答案

SELECT 
    name,
    cat_id 
    FROM table 
    WHERE cat_id IN (67)
    order by cat_id asc;
UNION
SELECT 
    name,
    cat_id 
    FROM table 
    WHERE cat_id IN (65,66)
    order by cat_id asc;   

关于php - 在 mysql 中使用 WHERE 和 IN 时数组的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27530280/

相关文章:

php - mysqldump 和 wamp

MySQL 8.0 : Error when inserting date data

php - 多维数组转 CSV

php - 学说 DQL : DQL Join between 4 entities

php - 按 id 和 timedate 将多行分组并根据日期显示

javascript - 重构数组

arrays - 将数据复制(导入)到 PostgreSQL 数组列中

php - 无法在 Monolog 的 yaml 配置中为 native_mailer 设置 content_type?

php - 为什么 PHP 不能将 PHP_INT_MIN 中的数字序列识别为整数

javascript - 是什么限制了此 JSON 解析,我该怎么做才能修复它?