我有以下幾點:修改MySQL Query以強制記錄先出現?
"SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC"
有一個在我與工作系統某處的一個錯誤是指一個頁面可以具有比主頁較低的排序值。我目前正在研究這個問題,同時我需要查詢來強制首頁出現。
可以修改此查詢,以便始終得到頁面的首個顯示爲id
的頁面,然後按排序列對其餘頁面進行排序?
我有以下幾點:修改MySQL Query以強制記錄先出現?
"SELECT * FROM pages WHERE parent=0 ORDER BY `sort` ASC"
有一個在我與工作系統某處的一個錯誤是指一個頁面可以具有比主頁較低的排序值。我目前正在研究這個問題,同時我需要查詢來強制首頁出現。
可以修改此查詢,以便始終得到頁面的首個顯示爲id
的頁面,然後按排序列對其餘頁面進行排序?
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)
索引都可以使用。
SELECT * FROM pages WHERE parent=0 ORDER BY `id` ASC, `sort` ASC
如果'id'是'PRIMARY KEY',這與'ORDER BY id'相同。 – Quassnoi 2010-11-01 13:38:35
SELECT * FROM pages WHERE parent=0 ORDER BY IF(id = 1, -1, 0) ASC, id ASC
非常感謝,這完美地工作。 – JasonS 2010-11-01 17:32:24