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