修改MySQL查询以强制记录首先出现?

时间:2010-11-01 13:33:37

标签: mysql

我有以下内容:

"SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC"

我正在使用的系统中存在某个错误,这意味着页面的排序值可能低于主页。我目前正在研究这个问题,与此同时我需要查询来强制首页出现。

是否可以调整此查询,以便始终显示首先显示id为1的页面,然后按排序列排序?

3 个答案:

答案 0 :(得分:1)

SELECT  *
FROM    pages
ORDER BY
        id = 1 DESC, sort

如果要对此查询应用LIMIT子句,最好将其拆分为两个:

SELECT  *
FROM    pages
WHERE   id = 1
UNION ALL
SELECT  *
FROM    (
        SELECT  *
        FROM    pages
        WHERE   parent = 0
                AND id <> 1
        ORDER BY
                parent, sort
        LIMIT 9
        )

以便可以使用(parent, sort)上的索引。

答案 1 :(得分:1)

SELECT * FROM pages WHERE parent=0 ORDER BY IF( id = 1, -1, 0 ) ASC, id ASC

答案 2 :(得分:0)

SELECT * FROM pages WHERE parent=0 ORDER BY `id` ASC, `sort` ASC