我有以下内容:
"SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC"
我正在使用的系统中存在某个错误,这意味着页面的排序值可能低于主页。我目前正在研究这个问题,与此同时我需要查询来强制首页出现。
是否可以调整此查询,以便始终显示首先显示id
为1的页面,然后按排序列排序?
答案 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