2011-06-24 77 views
2

我正在構建一個查找與用戶在表單中輸入的內容類似的項目的功能。 用戶填寫兩個字段:類型和製造商帶有多個關鍵字的MySQL MATCH

我想在我的數據庫中搜索匹配其相應值的記錄,並首先返回最佳匹配。

我有一個分數分配給每個字段的查詢:

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type` FROM `items` 

這其實工作併產生分數。

現在我要計算總得分,這是兩個分數的總和,以用於以後對結果進行排序:

SELECT id, manuf, model, type, MATCH(manuf) AGAINST('BMW') AS `score_manuf`, MATCH(type) AGAINST('Car') AS `score_type`, (score_manuf + score_type) as 'score' FROM `items` 

當我運行此查詢,我得到一個錯誤說「 score_manuf「是一個未知列。

我不能在別名字段上運行算術嗎?或者也許有另一種方法來完成我想要做的事情?

回答

3
SELECT id, manuf, model, type, 
     @m := MATCH(manuf) AGAINST('BMW') AS score_manuf, 
     @t := MATCH(type) AGAINST('Car') AS score_type, 
     @m + @t as score 
    FROM items; 

這是你定義user-defined variables

+0

哇的樣子,我不知道這意味着什麼,但它的工作。謝謝! –