4
我有這樣一個表:如何排除用MySQL排序的一些值?
id products_name sort
1 abc 0
2 xyz 1
3 pqr 2
4 qwe 0
我想通過sort
列,按升序排序記錄,但我不希望在結果集中的頂部0行。
sort
列中的0
行應位於結果集的底部,其餘行應使用sort
列以升序排序。
我該怎麼做?
我有這樣一個表:如何排除用MySQL排序的一些值?
id products_name sort
1 abc 0
2 xyz 1
3 pqr 2
4 qwe 0
我想通過sort
列,按升序排序記錄,但我不希望在結果集中的頂部0行。
sort
列中的0
行應位於結果集的底部,其餘行應使用sort
列以升序排序。
我該怎麼做?
你可以嘗試這樣的:
ORDER BY IF(SORT=0, 999999999, SORT)
可以使用ORDER BY IF
聲明:
SELECT *
FROM table
ORDER BY IF(SORT = 0, 999999999, SORT)
,或者您可以使用UNION ALL
語句來實現這一目標:
(SELECT * FROM table WHERE sort > 0 ORDER BY sort)
UNION ALL
(SELECT * FROM table WHERE sort = 0)
的' UNION'子句意味着用於刪除重複項的排序,這意味着您的輸出結果不是將按'sort'排序。你會想用'UNION ALL'有機會逃避排序傳遞... – Romain
@Romain:你說得對。如果你使用'UNION',結果將被重複過濾。相反,使用'UNION ALL'。 –
如果您的WHERE子句是'sort = 0',則不需要'ORDER BY sort'。 –