MySQL INSTR 通过匹配位置进行排序

标签 mysql

我正在执行查询以返回表中的值,这些值是字符串 (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

关于MySQL INSTR 通过匹配位置进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50465720/

相关文章:

mysql - Grails 3 - Gradle 依赖项 Mysql Connector

mysql - 将动态代码传递给 MySQL 执行

mysql - 如何使子查询的mysql查询将2个结果合并为1个结果

php - 将数组中的值插入表中

mysql - 即使插入列, 'WHERE' 子句中的 SQL 未知列

mysql - 使用 JUNG 可视化 MySQL 数据

python - 如何使用 MySQLDB 中的变量更新 MySQL 单元

MySQL/MariaDB 生成安全序列

php - 该 MySQL 版本不允许使用该命令

mysql - 从两列的总和中选择顶部 x