2013-02-11 23 views
1

我們有一個搜索查詢,允許用戶輸入一個字符串,然後通過LIKE'%string%'搜索3個單獨的字段。這些字段是:根據找到的字段排序SQL結果

  • 名稱
  • 說明
  • 類型

當然後將結果返回而現在只是爲了他們隨意。我們希望首先按名稱字段中的結果排序結果,然後再按說明字段中的項目排序,最後在類型字段中排序。因爲我們的分頁和排序也與此相關,所以我們確實希望它在一個記錄集中返回。這甚至有可能嗎?

在此先感謝。

+1

MSSQL,MySQL和甲骨文?查詢的外觀如何?你試過什麼了? – rikitikitik 2013-02-11 05:20:07

+0

它是MySQL,現在它看起來像下面的一個,除了我只是按名稱排序。從表中選擇*其中名稱如'%string%'和類似'%string%'的描述並鍵入'%string%'按名稱排序 – jeremykrall 2013-02-11 06:15:50

回答

1

在MySQL中,下面應該工作:

SELECT * 
FROM atable 
WHERE Name  LIKE '%string%' 
    OR Description LIKE '%string%' 
    OR Type  LIKE '%string%' 
ORDER BY 
    CASE 
    WHEN Name  LIKE '%string%' THEN 1 
    WHEN Description LIKE '%string%' THEN 2 
    WHEN Type  LIKE '%string%' THEN 3 
    END 
; 
+0

完美,謝謝! – jeremykrall 2013-02-11 19:21:49

0

你可以試試這個:

Select * 
from Tablename 
where Name like '%string%' 
and description like '%string%' 
and type like '%string%' 
order by name,description,type 
0

請試試這個:

Select * 
from Table 
where Name like '%string%' 
and description like '%string%' 
and type like '%string%' 
order by name,description,type 
+0

嗯,它似乎沒有以正確的順序返回它們,因爲如果它發現它在描述中,描述的名稱比它匹配的「名稱」的字母順序更高,然後首先顯示它。我希望名稱結果能夠事先顯示......可能必須對它進行一些後期排序。 – jeremykrall 2013-02-11 06:17:21