2010-06-18 69 views
2

我正在研究PostgreSQL中的搜索查詢,並且我所做的一件事是通過匹配的參數數量對我的查詢結果進行排序。我不知道如何做到這一點。有沒有人有建議或解決方案?通過查詢中的參數匹配計數進行搜索排序? PostgreSQL

Table 
brand  color  type  engine 
Ford  Blue  4-door V8 
Maserati Blue  2-door V12 
Saturn Green  4-door V8 
GM  Yellow 1-door V4 

Current Query 
SELECT brand FROM table WHERE color = 'Blue' or type = '4-door' or engine = 'V8' 

Result Should Be 
Ford  (3 match) 
Saturn (2 match) 
Maserati (1 match) 

回答

2

我想你應該能夠做到:

ORDER BY 
    CASE WHEN color = 'Blue' THEN 1 ELSE 0 END + 
    CASE WHEN type = '4-door' THEN 1 ELSE 0 END + 
    CASE WHEN engine = 'V8' THEN 1 ELSE 0 END DESC 
+0

完美地工作。謝謝! – 2010-06-18 15:17:35

-1

對於MySQL它應該是這樣的,

SELECT brand, 
IF(color = 'Blue',1,0)+IF(type = '4-door', 1,0)+IF(engine = 'V8',1,0) 
    AS num_matches 
FROM table WHERE color = 'Blue' or type = '4-door' or engine = 'V8' 

仔細檢查,如果語法PostgreSQL的。 您也可以使用CASE。

+0

並添加「分類方式2說明」,給予正確的排序順序。 – 2010-06-18 15:08:51

相關問題