修改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