我正在尝试在我的网站(这是一个社交网站)上构建一个简单的搜索,我想搜索在该网站上注册的所有用户,并返回一个建议列表(这就是这个查询的目的,建议列表)。
我要搜索的表包含以下列:userID
、fname
、lname
。
我想搜索最后 2 列(2 个名称),并按照与搜索词匹配的名称数量的顺序返回它们。
我要运行的查询的第一部分是:
SELECT userID, fname, lname FROM names WHERE
但剩下的,我需要帮助。
编辑: 使用此查询进行搜索:
SELECT userID, fname, lname FROM names WHERE fname LIKE '%".$term."%' OR lname LIKE '%".$term."%'
我怎样才能对它进行排序,以便结果按匹配项开头的结果排序,所以当我键入 M
时,它返回说,Mark
before 亚当
最佳答案
你可以试试
SELECT userID, fname, lname,
myRank = CASE WHEN fname = @term THEN 4
WHEN fname like @term + '%' THEN 3
WHEN fname like '%' + @term + '%' THEN 2
ELSE.... whatever ranking you want
FROM names
WHERE fname LIKE '%' + @term + '%'
OR lname LIKE '%' + @term + '%'
ORDER BY myRank DESC
关于php - 搜索名字和姓氏,按匹配准确度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13328213/