MySQL MATCH有多个关键字

时间:2011-06-24 18:52:44

标签: mysql alias match keyword

我正在构建一个功能,可以查找与用户在表单中输入的内容类似的项目。 用户填写两个字段:类型和制造商

我想在我的数据库中搜索与其对应值匹配的记录,并首先返回最佳匹配。

我有一个查询为每个字段分配一个分数:

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”是一个未知列。

我可以不在别名字段上运行算术吗?或许还有另一种方法来完成我想要做的事情?

1 个答案:

答案 0 :(得分: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

的方式