2013-11-26 24 views
3

我有表「業務」爲波紋管按字段,指定字段順序是:在最後

enter image description here

我想在客戶訂單類型來獲取該記錄順序。爲了所以我寫了像 SELECT *查詢FROM business ORDER BY字段(類型,「3型」,「2型」,「類型10」)

但什麼發生的是其他類型的出現和給定的順序變爲持續。給定的順序應該在頂部,然後是其他記錄。以上查詢返回結果如下。 enter image description here

如何將type3,type2和type10放在最前面。

回答

1

所以這將是:

SELECT 
    * 
FROM 
    business 
ORDER BY 
    `type` IN ('type3', 'type2', 'type10'), 
    FIELD (`type`, 'type3', 'type2', 'type10') 
0

嘗試以下:

ORDER BY 
    CASE `type` 
    WHEN 'type3' THEN 1 
    WHEN 'type2' THEN 2 
    WHEN 'type10' THEN 3 
    ELSE 4 
END 
0

要查看使用field功能,你必須使用這些要麼ASCDESC結果集的頂部選擇性數據一組值。否則,將返回默認結果。你的就是一個例子。

您可以

ORDER BY FIELD (type, 'type3', 'type2', 'type10') DESC 

嘗試看看結果作爲

type10 
type2 
type3 

如何把在頂部的3型,2型和類型10爲了

使用ASC將導致

type3 
type2 
type10 

數據的輸入順序的功能Field優先用於顯示與ASCDESC使用時。否則結果將是默認值。

這些字段我沒有在查詢

他們肯定會在結果集,除非你指定一個WHERE條件給出。 FIELD函數不是WHERE子句的別名。

參考

相關問題