Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改MySQL查询以强制首先显示记录?_Mysql - Fatal编程技术网

修改MySQL查询以强制首先显示记录?

修改MySQL查询以强制首先显示记录?,mysql,Mysql,我有以下资料: "SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC" 我正在使用的系统中存在一个bug,这意味着页面的排序值可能低于主页。我目前正在研究这个问题,同时我需要查询来强制首页首先出现 是否可以调整此查询,使其始终首先显示id为1的页面,然后按排序列对其余页面进行排序 SELECT * FROM pages ORDER BY id = 1 DESC, sort 如果要对此查询应用LIMIT子句,最好

我有以下资料:

"SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC"
我正在使用的系统中存在一个bug,这意味着页面的排序值可能低于主页。我目前正在研究这个问题,同时我需要查询来强制首页首先出现

是否可以调整此查询,使其始终首先显示id为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
        )
因此,可以使用父项sort上的索引。

如果id是主键,则与orderbyid相同。
SELECT * FROM pages WHERE parent=0 ORDER BY `id` ASC, `sort` ASC
SELECT * FROM pages WHERE parent=0 ORDER BY IF( id = 1, -1, 0 ) ASC, id ASC