Mysql SQL语法,说明如何使用大小写按与大多数单词的最佳匹配排序
我目前正在修改opencart搜索功能,这是一个没有PHP的简化版代码,我希望按最匹配的单词排序我的结果。我已经研究了其他问题,但似乎无法掌握如何在SQL中使用Mysql SQL语法,说明如何使用大小写按与大多数单词的最佳匹配排序,mysql,sql,search,Mysql,Sql,Search,我目前正在修改opencart搜索功能,这是一个没有PHP的简化版代码,我希望按最匹配的单词排序我的结果。我已经研究了其他问题,但似乎无法掌握如何在SQL中使用CASE来简单地对匹配进行优先级排序。 有没有人能告诉我语法 SELECT id from oc_products where product_description LIKE '%my search keywords%' OR product_description LIKE '%my%' OR product_des
CASE
来简单地对匹配进行优先级排序。
有没有人能告诉我语法
SELECT id from oc_products where
product_description LIKE '%my search keywords%'
OR product_description LIKE '%my%'
OR product_description LIKE '%search%'
OR product_description LIKE '%keywords%'
ORDER BY
CASE
WHEN product_description LIKE '%my search keywords%'
WHEN product_description LIKE '%my search&'
WHEN product_description LIKE '%my&'
WHEN product_description LIKE '%search&'
WHEN product_description LIKE '%keywords&',
ASC
我知道我的语法完全不正确,但我不确定如何在代码中实现然后,以便按照上述顺序对结果进行优先级排序
谢谢您第一个解决方案:案例
SELECT id
FROM oc_products
WHERE product_description LIKE '%my search keywords%'
OR product_description LIKE '%my%'
OR product_description LIKE '%search%'
OR product_description LIKE '%keywords%'
ORDER BY CASE WHEN product_description LIKE '%my search keywords%' THEN 0
WHEN product_description LIKE '%my search&' THEN 1
WHEN product_description LIKE '%my&' THEN 2
WHEN product_description LIKE '%search&' THEN 3
WHEN product_description LIKE '%keywords&' THEN 4
END DESC
第二种解决方案:在ORDER BY
SELECT id
FROM oc_products
WHERE product_description LIKE '%my search keywords%'
OR product_description LIKE '%my%'
OR product_description LIKE '%search%'
OR product_description LIKE '%keywords%'
ORDER BY product_description LIKE '%my search keywords%' DESC
, product_description LIKE '%my search&' DESC
, product_description LIKE '%my&' DESC
, product_description LIKE '%search&' DESC
, product_description LIKE '%keywords&' DESC
试试这个
SELECT id
FROM oc_products
WHERE product_description LIKE '%my search keywords%'
OR product_description LIKE '%my%'
OR product_description LIKE '%search%'
OR product_description LIKE '%keywords%'
ORDER BY product_description LIKE '%my search keywords%' desc
, product_description LIKE '%my search%' desc
, product_description LIKE '%my%' desc
, product_description LIKE '%search%' desc
, product_description LIKE '%keywords%' desc;
SQL fiddle here:因此,您希望按照数据的外观对likewell进行排序我只希望最匹配的数据首先出现,此时带有“我的搜索关键字”的数据可能会出现在列表的一半谢谢,您的最新答案成功了,但出于某种原因,我不得不在END
之后加上DESC
,以便它按正确的顺序运行。无论哪种方式都很完美thanks@Adrian:很高兴帮助你
SELECT id
FROM oc_products
WHERE product_description LIKE '%my search keywords%'
OR product_description LIKE '%my%'
OR product_description LIKE '%search%'
OR product_description LIKE '%keywords%'
ORDER BY product_description LIKE '%my search keywords%' desc
, product_description LIKE '%my search%' desc
, product_description LIKE '%my%' desc
, product_description LIKE '%search%' desc
, product_description LIKE '%keywords%' desc;