У меня есть две таблицы A и B. A является родителем B. Я пытаюсь найти все As, у которых нет определенного B в качестве ребенка. Обычно я хотел бы сделатьSQL Выбор строк и исключение детей
SELECT A.id FROM A WHERE A.id NOT IN (SELECT B.AId FROM B WHERE B.someFK = foo);
Однако по причинам производительности Увлекаюсь не использовать внутренний выбор. Я пытался что-то вроде:
SELECT A.id FROM A LEFT JOIN B ON (A.id = B.AId) WHERE B.someFK != foo OR B.someFK IS NULL
Проблема заключается в следующем возвращается, как имеющие более одного ребенка, независимо от того, если они имеют указанный B.
EDIT: Изменено B.id к B. someFK
Упс, не думал, что это будет иметь значение для примера, но B.id должен быть B.someFK. Это означает, что As может использовать исключение foo. – Jim
, вы должны, вероятно, отредактировать это непосредственно в вопросе, чтобы он был более заметен для новых читателей. – DMA57361
Вы новичок в StackOverflow. Пожалуйста, примите ответ, если он решит вашу проблему. – Falcon