mySQL Left Join - PullRequest
       15

mySQL Left Join

1 голос
/ 15 августа 2011

У меня есть две таблицы T1L и T2U. Для записей, соответствующих left join, если Deleted!=0, я не хочу эти записи ни из одной таблицы.

SELECT
    IF(U.Column1 IS NULL, L.id, -U.id) AS id,
    IF(U.Column1 IS NULL, L.Column1, U.Column1) AS Column1,
    IF(U.Column1 IS NULL, L.Column2, U.Column2) AS Column2,
    IF(U.Column1 IS NULL, L.Deleted, U.Deleted) AS Deleted
FROM
    T1 L
LEFT JOIN T2 U
    ON L.Column1 = U.Column1 AND L.Column2=U.Column2 AND U.Deleted=0

Если Deleted!=0, в настоящее время он выдаст мне запись из TI. Я вообще не хочу эту запись ни с TI, ни с T2.

Как мне изменить запрос для достижения этого?

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Переместите его в предложение WHERE и добавьте дополнительную проверку для NULL.

SELECT
    IF(U.Column1 IS NULL, L.id, -U.id) AS id,
    IF(U.Column1 IS NULL, L.Column1, U.Column1) AS Column1,
    IF(U.Column1 IS NULL, L.Column2, U.Column2) AS Column2,
    IF(U.Column1 IS NULL, L.Deleted, U.Deleted) AS Deleted
FROM
    T1 L
LEFT JOIN T2 U
    ON L.Column1 = U.Column1 AND L.Column2=U.Column2 
WHERE
    U.Deleted=0
    OR U.Deleted IS NULL
0 голосов
/ 15 августа 2011

Если я понимаю, что вы пытаетесь сделать правильно, вы должны удалить «AND U.Deleted = 0» в объединении и добавить предложение WHERE:

WHERE U.Deleted=0 OR U.Column1 IS NULL
...