2
我在嘗試爲我的搜索結果更準確地訂購。我指定了一個搜索字符串 - 例如「北京奧運」使用MySQL查詢中的查詢
- 如果標題欄包含「北京奧運」,那麼分數100加到得分,否則什麼都不添加
- 如果SHORTDESCRIPTION列中包含「北京奧運會」,那麼50被添加到比分,否則什麼都不添加
- 如果longDescription列中包含「北京奧運會」,那麼10加到得分,否則什麼都不添加
最終得分最高每條記錄可能會是160和我想要結果按排序最高得分第一,限於最多10個結果。
下面肯定是錯誤的,但它應該說明我希望實現的目標!
SELECT
title,
id,
(
IF((match 'Beijing Olympics' against title)*100) +
IF((match 'Beijing Olympics' against shortDescription)*50) +
IF((match 'Beijing Olympics' against longDescription)*10)
) as score
from listings
order by score desc limit 10
謝謝你的回覆。 CASE對我來說是新的! 我得到一個MySQL錯誤,即使我嘗試削減版本: SELECT標題,ID,(CASE冠軍時,「北京奧運會」,那麼100 ELSE 0)作爲評分從列表 #1064 - 你有一個您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在')附近使用正確的語法作爲分值清單 – Chris 2011-05-06 16:11:56
啊哈,看起來像我需要添加END – Chris 2011-05-06 16:13:42
@Chris oops!編輯我的答案包括'END CASE' – Matthew 2011-05-06 16:15:43