2014-09-21 7 views
0

Я знаю, что могу сделать это с помощью соединения таблицы, однако, я пытаюсь сделать это с предложением WHERE EXISTS. Я знаю, что есть 65 матчей, тем не менее, подзапрос не работает. Он переносит все значения из скрабов таблицы.WHERE EXISTS не работает

pdwspend. Child Supplier ID имеет много значений дубликатов, поэтому я использую DISTINCT в подзапросе.

SELECT DISTINCT sc.`BW Parent Number` 
FROM scrubs sc 
WHERE EXISTS (

    SELECT DISTINCT pdwspend.`Child Supplier ID` 
    FROM pdwspend 
    WHERE pdwspend.`BU ID` = 'BU_1' 
    AND pdwspend.version LIKE '%GOV%' 
    ) 
AND SC.`year` =2014 

Благодаря

ответ

2

Я подозреваю, что вы хотите, связанный подзапрос. Прямо сейчас, exists либо находит строку (и все возвращается), либо не находит строку (и ничего не возвращается). Вот думаю, как то, что запрос вы хотите выглядит следующим образом:

SELECT DISTINCT sc.`BW Parent Number` 
FROM scrubs sc 
WHERE EXISTS (SELECT 1 
       FROM pdwspend s 
       WHERE s.`BU ID` = 'BU_1' AND s.version LIKE '%GOV%' AND 
        s.`Child Supplier ID` = sc.`BW Parent Number` 
      ) AND 
     SC.`year` = 2014; 

отметить также, что distinct не требуется для exists подзапросов.

+0

'BW Родительский номер' =' Идентификатор поставщика ребенка ', однако, 'ID поставщика ребенка' имеет много дубликатов – nangys

+0

@nangys. , , Дубликаты не имеют значения в предложении 'exist'. –

+0

спасибо за помощь. Я использовал ваш запрос, однако, по какой-то причине mysql продолжает сбой. Есть идеи? – nangys

Смежные вопросы