Простой кейс
У меня есть простая таблица, где один столбец - это PK другого элемента той же таблицы, как показано ниже:
id | something | parent_id
___________|______________|____________
1 | colors | null
2 | red | 1
3 | green | 1
4 | blue | 1
... | ... | ...
Задача
Я хотел получить все элементы, которые имеют parent_id
элемента, соответствующего условию.
Давайте предположим, что родительский элемент должен иметь something='colors'
Ожидаемый результат
id | something | parent_id
___________|______________|____________
2 | red | 1
3 | green | 1
4 | blue | 1
После просмотра StackOverflow я попытался:
SELECT * FROM my_table WHERE
parent_id=(SELECT id FROM my_table WHERE something='colors')
а также:
SELECT * FROM my_table as t1 WHERE
t1.parent_id=(SELECT id FROM my_table as t2 WHERE t2.something='colors')
но я получаю эту ошибку:
Ошибка: в синтаксисе SQL есть ошибка
Причиной была пропущенная ;
в предыдущем файле, который был объединен перед моим. Вышеуказанные запросы работают ...
Это не моя область, и я знаю, что " решение " (? ) (, используемое другими в проекте ) может быть:
SELECT * FROM my_table WHERE
parent_id=(SELECT id FROM (SELECT * FROM my_table) AS t1 WHERE something='colors')
но мне это не очень нравится
Спасибо всем за помощь.
Я знаю, что мы должны LIMIT 1
или использовать IN
для предотвращения ошибок, я пытался максимально упростить синтаксис.