Mysqli "IN" Оператор Динамические и Статические значения - PullRequest
0 голосов
/ 30 мая 2018

На самом деле я пытаюсь получить результаты из столбца, где идентификатор равен 219 и где идентификатор совпадает с запросом.

SELECT *
FROM `table1`
WHERE `id` IN ('219', SELECT `id` FROM `table2` WHERE `parent_id`='219')

Я хочу использовать идентификатор 219 и выполнить запрос вместе, чтобы запрос подтянулсяеще несколько идентификаторов.но это не работает для меня.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

По моему опыту, предложение OR не было хорошо оптимизировано в MySQL.Другой вариант - создать подзапрос в предложении IN, включив в него '219', например

SELECT * FROM table1 WHERE id IN (
SELECT id FROM table2 WHERE parent_id = 219 UNION SELECT '219')
0 голосов
/ 30 мая 2018

Вы можете попробовать эту версию:

SELECT *
FROM table1
WHERE id = 219 OR id IN (SELECT id FROM table2 WHERE parent_id = 219);

Ваш вопрос имеет вид рекурсивного иерархического запроса, где мы, вероятно, будем выполнять какое-то соединение.Если вам нужен более сложный вывод, обновите свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...