2013-10-09 7 views
0

У меня есть следующие таблицы и данныеMySQL LEFT JOIN запрос с равно нулю

Table D 
d_id 
----------- 
1 
2 
3 

Table V 
v_id   d_id   
----------- ----------- 
1   1 
2   2 

Я получаю d_id, который не используется в таблице V и мой запрос следующим образом

SELECT distinct(d.d_id) AS d 
    , v.v_id AS v 
FROM 
     D LEFT JOIN V 
    ON (d.d_id  = v.v_id ) 
where v.v_id IS NULL 

d_id 
------------- 
3 

Когда я прохожу значение (например: d.d_id = 2) на запрос, я хочу результат в следующем формате

d_id 
------------- 
    2 
    3 
+0

Просьба предоставить образец с полной спецификацией переданных данных и желаемого результата. Пока неясно, что такое «данные», которые вам нужны. –

+0

@ alma посмотрите пожалуйста ... –

ответ

1

различны (d.d_id)

select distinct НЕ является функцией, и, хотя использование этих круглых скобок не приведет к синтаксической ошибке, они абсолютно не влияют на поведение select distinct; поэтому Все столбцы будут вычисляться для получения определенного набора значений.

SELECT /* DISTINCT is this really needed? Don't use it unless needed */ 
     d.d_id AS d 
    , v.v_id AS v 
FROM D 
LEFT JOIN V ON (d.d_id = v.v_id) 
WHERE v.v_id IS NULL 
OR d.d_id = 1 

-- OR v.d_id = 1 -- not clear on which d_id you want to pass