我正在构建一个功能,可以查找与用户在表单中输入的内容类似的项目。 用户填写两个字段:类型和制造商
我想在我的数据库中搜索与其对应值匹配的记录,并首先返回最佳匹配。
我有一个查询为每个字段分配一个分数:
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”是一个未知列。
我可以不在别名字段上运行算术吗?或许还有另一种方法来完成我想要做的事情?
答案 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;
的方式