mysql - MySQL INSTR 按匹配位置排序
问题描述
我正在执行查询以返回表中的值,这些值是字符串 (str) 中包含的子字符串。它正在工作,但现在我想按照它们在给定字符串中出现的顺序对结果进行排序。另外,我希望它返回重复的匹配项,并保持主字符串中的顺序。
这是原始的工作查询:
【当前结果顺序为匹配字段在表中的存储顺序】
select
id_ingrediente,
str,
root
from essenzia_ingredientes
where lang=1
AND instr('i\'m listening to music', str) > 0
这就是我想要做的:
select
id_ingrediente,
str,
root
from essenzia_ingredientes
where lang=1
AND instr('i\'m listening to music', str) as ord > 0
ORDER BY ord ASC
当然这是错误的,但我展示它是为了使我想要实现的目标变得清晰。
解决方案
您在选择列中创建要排序的列,而不是在 where 子句中:
select
`id_ingrediente`,
`str`,
`root`,
instr("i'm listening to music", `str`) as `ord`
from `essenzia_ingredientes`
where `lang` = 1
AND instr("i'm listening to music", `str`) > 0
ORDER BY `ord` ASC
推荐阅读
- maven - 托管的 maven spring boot 依赖项未加载到 m2 文件夹
- javascript - 使用 Material UI Tooltip 测试组件时发出警告
- r - 添加css“style = position:fixed;”时sidebarPanel缩小
- python - 识别汇编代码并为其创建 python 脚本
- regex - 正则表达式匹配除单词之外的所有内容
- python - SymPy中二阶张量本身的行列式和逆的导数
- c# - Post 方法 JSON WebAPI 请求失败并出现 400 错误请求
- java - Android 9 上的振动
- javascript - Javascript 导入命令
- angular - 沿 y 轴的 ng-2 折线图的渐变色