У меня очень странная ситуация в MySQL (MariaDB). У меня есть запрос с:
- два
keywords
- один
location
- один
salary
- один
limit
Если keywords
аргументы расположены в другом порядке, я получаю разные результаты:
Запрос № 1:
bindings: [ '%Javascript%', '%Vue.js%', 'Krakow', '3000', 15 ],
sql:
'select `jobs`.*,`companies`.`name`as `company_name`,
`companies`.`logo` as `company_logo`, `projects`.`staff`,
`projects`.`breakdown`, `projects`.`methodology`,
`projects`.`stack`, `projects`.`perks`
from `jobs`
inner join `companies` on `jobs`.`company_id` = `companies`.`id`
inner join `projects` on `jobs`.`project_id` = `projects`.`id`
where `keywords` like ?
or `keywords` like ?
and `location` = ?
and `salary_min` >= ?
order by `jobs`.`salary_min` desc
limit ?' }
count: 45
Запрос № 2:
bindings: [ '%Vue.js%', '%Javascript%', 'Krakow', '3000', 15 ],
sql:
'select `jobs`.*, `companies`.`name`as `company_name`,
`companies`.`logo` as `company_logo`, `projects`.`staff`,
`projects`.`breakdown`, `projects`.`methodology`,
`projects`.`stack`, `projects`.`perks`
from `jobs`
inner join `companies` on `jobs`.`company_id` = `companies`.`id`
inner join `projects` on `jobs`.`project_id` = `projects`.`id`
where `keywords` like ?
or `keywords` like ?
and `location` = ?
and `salary_min` >= ?
order by `jobs`.`salary_min` desc
limit ?' }
count: 6
Проблемы:
- почему он не возвращает работу только из выбранных location
?
- почему разница в счете из-за keywords
заказа?
Хотелось бы понять это - не могу обернуть голову вокруг этого. Я использую Knex для выполнения этих запросов.