jquery - 如果单词在两列中,则优先于 mysql 中的结果
问题描述
我有一张这样的桌子:
menu_id menu_name menu_description
如果单词在菜单名称和菜单描述中,我想优先排序结果。我怎样才能做到这一点?
更新:通过这个查询,我得到最相关的结果:
select menu_id, menu_name, menu_description from ( select menu_id,
menu_name, menu_description, case when menu_name like '%salame%'
then 1 else 0 end + case when menu_description like '%salame%'
then 1 else 0 end as order_value from z8upvan6w_menus) as t order
by order_value desc
结果:
menu_id | menu_name | menu_description
13 | Panino Salame e Noci | Salame, Noci, Caprino e Insalata
14 | Piadina Salame e Noci | Salame, Noci, Caprino e Insalata
11 | Panino Caprese | Mozzarella, Pomodoro e Insalata
12 | Panino Boscaiolo | Speck, Brie e Salsa Boscaiola
我的问题是,如果任何字段中没有“salame”一词,为什么会出现第三和第四条记录,我该如何摆脱它们?
解决方案
您没有过滤掉任何记录。为此,您需要一个where
子句:
select menu_id, menu_name, menu_description
from from z8upvan6w_menus
where (menu_name like '%salame%') or
(menu_description like '%salame%' )
order by ( (menu_name like '%salame%') +
(menu_description like '%salame%')
) desc;
笔记:
- 该
where
子句进行过滤。 - 不需要子查询。您可以按表达式排序。
- 我修改了表达式,因此它使用 MySQL 将布尔值视为数字上下文中的数字的事实,“1”表示真,“0”表示假。
推荐阅读
- python - 基于最后一个分隔符拆分的新列
- python - 我怎样才能让文本进入睡眠功能?
- javascript - 结果未推送到空白数组
- maven - Maven无法解析参数的mojo配置#
- python - 使用服务帐户模拟 Google Drive 获取刷新令牌
- ethereum - payable() 函数
- javascript - 如何使用 cypress 使用 aws 凭证
- swift - 如果第二个发布者取决于第一个发布者收到的值,如何压缩两个发布者?
- git - Git/Github:管理带有公共和私有子模块的分叉存储库
- php - 如何从 PHP MySQL PDO 中的列中添加总计的底部行并显示它?