php - 按相似度排序搜索结果

标签 php mysql

在同一页上我有两个搜索结果。第一个从当前页面之前的页面自动生成。我有一个名为 Brand Name 的字段 我希望第二个搜索顺序基于第一个搜索的值或文本 .例如,如果 Brand= X 所有 X 品牌都位于第二次搜索的顶部

 $rbrand = $row [Brand_name] // Brand name from first search result

我试过这个来排序第二个搜索结果

 SELECT * 
  FROM tablename 
ORDER 
    BY IF(Brand_Name LIKE '%$rbrand%',0,1)

最佳答案

有多种方法可以实现这一点。

你可以使用CASE, WHEN, THEN

SELECT CASE WHEN Brand_Name LIKE '%$rbrand%' THEN 0 ELSE 1 END AS Brand_Sort, Brand_Name
FROM tablename
ORDER BY Brand_Sort

或者一个 UNION 例如

SELECT Brand_Name 
FROM tablename
WHERE Brand_Name LIKE '%$rbrand%'
UNION
SELECT Brand_Name 
FROM tablename
WHERE Brand_Name NOT LIKE '%$rbrand%'

关于php - 按相似度排序搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952002/

相关文章:

mysql - 使用数据透视表查询同一个表

Mysql Innodb 在大多数空值的列上建立索引

mysql - SQL 查询将同一个表与 SUM 连接起来,直到每个返回的行

php - 为什么这会产生黑色图像?

php 打印中的 JavaScript 语法错误

php - 我收到 "undefined variable"PHP 通知

php - 捕获Youtube在WordPress中从帖子页面嵌入代码

php - 在 Symfony 2.8 中上传多张图片

php - 依赖于查询数据的列表上的 if/else 语句

javascript - Google Places 使用 PHP 将结果存储在 Mysql 中