MySQL INSTR с порядком по соответствующей позиции

0

Я выполняю запрос, чтобы возвращать значения в таблице, которые являются подстроками, содержащимися в строке (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

Конечно, это неправильно, но я показываю это, чтобы понять, чего я пытаюсь достичь.

Теги:

2 ответа

0
Лучший ответ

Вы создаете столбец для упорядочивания в столбцах выбора, а не в предложении 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
  • 0
    Спасибо Слоан. Просто интересно, достаточно ли у меня MySQL, чтобы повторно использовать дорогой поиск по INSTR? Или он будет искать дважды, один раз для поиска и один раз для заказа?
  • 0
    Я верю, что он выполнит это только один раз, если они точно совпадают.
0

ИЛИ вы можете просто поставить выражение в order by вместо создания столбца ord как ord ниже

select 
    'id_ingrediente',
    'str',
    'root'
from 'essenzia_ingredientes' 
where 'lang' = 1 
    AND instr("i'm listening to music", 'str') > 0 
ORDER BY instr("i'm listening to music", 'str') ASC
  • 0
    Спасибо. Действительно ценю это. Знаете ли вы, если MySQL повторно использует поиск INSTR или где я могу найти ответ на этот вопрос?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню