2010-12-10 10 views
3

複数の検索語を含むSQL SELECTクエリを作成しようとしています。しかし、私は結果が一致する単語の数で順序付けされることを望む。SQLの複数単語の検索、一致の数で並べ替え

たとえば、検索文字列を「赤緑青」とします。私は、これらの3つの単語をすべて上にして結果を得てください。結果は2つあり、最後には1つの単語だけが一致します。

SELECT 
    * 
FROM 
    table 
WHERE 
    (col LIKE '%red%') OR 
    (col LIKE '%green%') OR 
    (col LIKE '%blue%') 
ORDER BY 
    ????? 

ありがとうございます!

+0

MATCH()AGAINST()はInnoDBエンジンでサポートされていませんが、IF()+ ....文を使用する必要があります –

答えて

5
ORDER BY 
(
CASE 
WHEN col LIKE '%red%' THEN 1 
ELSE 0 
END CASE 
+  
CASE 
WHEN col LIKE '%green%' THEN 1 
ELSE 0 
END CASE 
+  
CASE 
WHEN col LIKE '%blue%' THEN 1 
ELSE 0 
END CASE 
) DESC 

あなたのDBベンダーがIFを持っている場合、あなたはMySQLを使用している場合たとえば、MySQLのあなたは IF (col LIKE '%red% , 1,0) + IF(....'