MySQL Join и внутренний выбор - PullRequest
1 голос
/ 26 ноября 2010

У меня в настоящее время есть запрос

ВЫБЕРИТЕ идентификатор ИЗ таблицы1 ГДЕ {фильтры для таблицы1} И идентификатор НЕ ВХОДИТ (ВЫБЕРИТЕ table1ID ИЗ таблицы2 ГДЕ условие = 0)

Таблица 1 имеет отношение 1 - Многие с таблицей 2, и я ищу все идентификаторы, которые не имеют записей в таблице 2 с условием = 0.

Есть ли способ переписать этот запрос без внутреннего выбора?Я уже некоторое время ломаю голову об этом, и любые указатели приветствуются.

1 Ответ

1 голос
/ 26 ноября 2010

Вы можете попробовать что-то вроде

SELECT  id 
FROM    table1 t1 LEFT JOIN
        table2 t2   ON  t1.ID = t2.table1ID
                    AND t2.Condition = 0
WHERE   {filters on table1} 
AND     t2.table1ID IS NULL

Или так же, как хорошо будет

SELECT  id
FROM    table1 t1
WHERE   {filters on table1} 
AND     NOT EXISTS  (
                        SELECT  1
                        FROM    table2 t2
                        WHERE   t1.ID = t2.table1ID
                        ADN     t2.condition = 0
                    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...