在mysql中使用WHERE和IN时,使用数组排序问题

时间:2014-12-17 16:31:07

标签: 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来操作数组。

1 个答案:

答案 0 :(得分:0)

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;