2013-02-11 77 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