2017-09-28 39 views
1

私が探しているのはORDER BYやORDER BY FIELDではないので、表現するのは難しいです。MySQLの条件による注文方法は?

私はこのクエリを持っている:私は必要なもの

SELECT * 
FROM table 
WHERE name LIKE '%xxx%' 
OR category_name LIKE '%xxx%' 
OR description LIKE '%xxx%'; 

はに基づいて結果ソートすることです: を - 最初に、「名前」フィールド と同様に一致するもの - 第二に、カテゴリ名 - 最後、説明

私は結果がソートされ、最初に "xxx"が名前で見つかった結果を並べ替えます。

私はこれがORDER BYではないと言ったので、そのソートはフィールド一致ではなくVALUEに基づいているためです。

+0

のようなあなたの基準に従って結果をソートするorder bycaseを使用することができます。 –

答えて

3

あなたが期待される結果とデータのテーブル構造を投稿してください

SELECT 
    * 
FROM 
    TABLE 
WHERE (
    `name` LIKE '%xxx%' 
    OR category_name LIKE '%xxx%' 
    OR description LIKE '%xxx%' 
) 
ORDER BY 
    CASE 
    WHEN `name` LIKE '%xxx%' 
    THEN 0 
    WHEN category_name LIKE '%xxx%' 
    THEN 1 
    WHEN description LIKE '%xxx%' 
    THEN 2 
    ELSE 3 
    END ASC 
+1

完璧なアンストラワー –