улучшите запрос mysql

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

DELETE FROM A  
WHERE i NOT IN 
( SELECT i FROM B WHERE j = 1  
  UNION select i from C 
  UNION select i from D 
);

В основном удалите все строки в где поле i не происходит в таблицах B, C или D. Если это было справедливо:

DELETE FROM A  
WHERE i NOT IN 
( SELECT i FROM B 
);

Затем это могло быть сделано легко с левым соединением

DELETE A FROM A 
LEFT JOIN B 
ON A.i = B.i
WHERE B.id is NULL;

(Предположите, что каждая таблица имеет идентификационное поле в схеме),

Я предполагаю, что моим вопросом является затем вышеупомянутое, расширяется на три сценария таблицы со следующим решением?

DELETE A FROM A 
LEFT JOIN B 
ON A.i = B.i AND B.j = 1
LEFT JOIN C
ON A.i = C.i 
LEFT JOIN D
ON A.i = D.i
WHERE B.id is NULL
AND   C.id is NULL
AND   D.id is NULL
1
задан Brian Tompsett - 汤莱恩 8 July 2015 в 21:59
поделиться