2014-12-08 39 views
2

我有這個表:mysql非字母順序?

id | businessName| keywords 
============================ 
1  Adam   FOX 
2  FOX   bla bla bla  

用戶插入一個字符串,我要搜索此字符串BUSINESSNAME和關鍵字columns.so我運行此查詢:

SELECT * FROM `business` WHERE `businessName` LIKE '%str%' OR `keywords` LIKE '%str%' 

我的問題:

首先,我想獲得名稱與str匹配的業務,然後獲得關鍵字匹配str的業務。

即:用戶輸入單詞FOX,MySQL將返回兩個企業(亞當和FOX),在這種情況下,我想了MySQL在第一FOX返回(因爲它的名字相匹配的str),然後返回亞當(因爲它是關鍵字匹配str

回答

4

您可以通過基於匹配所產生的價值秩序:

SELECT 
    * 
FROM `business` 
WHERE 
    `businessName` LIKE '%str%' OR 
    `keywords` LIKE '%str%' 
ORDER BY 
    CASE WHEN `businessName` LIKE '%str%' THEN 
    0 
    ELSE 
    1 
    END 

上面的例子是很普通的,但下面也應該在MySQL的工作,只是爲了條件:

SELECT 
    * 
FROM `business` 
WHERE 
    `businessName` LIKE '%str%' OR 
    `keywords` LIKE '%str%' 
ORDER BY 
    `businessName` LIKE '%str%' DESC 

您需要按順序添加DESC,因爲match(true)的排名會高於no match(false)。