Удаление с помощью LEFT JOIN

Я хочу удалить из таблицы в зависимости от данных, которые существуют в другой таблице, которая ссылается на первую, однако у меня есть код, который работает, и показывает значение, которое нужно удалить, когда я запускаю его как SELECT stetement, однако, когда я измените это, чтобы УДАЛИТЬ, это дает мне ошибки, я не понимаю, почему они там.

DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN coursework.flightBooking
ON leadCustomer.customerID = flightBooking.customerID
WHERE leadCustomer.customerID NOT IN (
SELECT customerID FROM (SELECT customerID, status FROM coursework.flightBooking) AS
StatusCount where status IN  ('R','H') GROUP BY customerID
)
AND leadCustomer.customerID = 8;

Ошибка:

ERROR:  syntax error at or near "leadCustomer"
LINE 1: DELETE leadCustomer.* FROM coursework.leadCustomer LEFT JOIN...
               ^

********** Error **********

ERROR: syntax error at or near "leadCustomer"
SQL state: 42601
Character: 8

Я использую postgres

Ответ 1

Откуда я вижу это, вам действительно не нужно соединение, чтобы выполнить это...

DELETE FROM coursework.leadCustomer 
WHERE leadCustomer.customerID NOT IN (
SELECT distinct customerID FROM coursework.flightBooking  where status IN  ('R','H') 
)
AND leadCustomer.customerID = 8;

он удалит все записи в leadcustomer с идентификатором клиента: 1) отличается от 8 2) Не в табличной переписке со статусом "R" или "H"

Разве это не то, что вы пытаетесь сделать?

Ответ 2

SAMPLE. УДАЛИТЬ ЗАПИСЬ В ТАБЛИЦЕ "А" НЕ ЗАПИСЬ В ТАБЛИЦЕ "H"

DELETE A FROM ARTICULO_ALMACEN A
LEFT JOIN HISTORICO_UNION H
ON A.COD_ARTICULO = H.COD_ARTICULO
AND A.COD_ALMACEN = H.COD_ARTICULO_ALMACEN
AND A.TPROPIEDAD1 = H.PROPIEDAD1
AND A.TPROPIEDAD2 = H.PROPIEDAD2
AND A.TPROPIEDAD3 = H.PROPIEDAD3
WHERE H.COD_ARTICULO IS NULL

Ответ 3

Вам нужно будет сделать это:

Удалить из таблицы A где ID в  (выберите ID из таблицы A a  left external join tableB b на a.ID = b.ID  где b.ID равно NULL)

Ответ 4

Удалить .* От leadCustomer.* то есть:

DELETE leadCustomer FROM coursework.leadCustomer LEFT JOIN coursework.flightBooking
ON leadCustomer.customerID = flightBooking.customerID
WHERE leadCustomer.customerID NOT IN (
SELECT customerID FROM (SELECT customerID, status FROM coursework.flightBooking) AS
StatusCount where status IN  ('R','H') GROUP BY customerID
)
AND leadCustomer.customerID = 8;

Ответ 5

вы можете попробовать это

 DELETE leadCustomer FROM coursework.leadCustomer lc
 LEFT JOIN coursework.flightBooking fb ON lc.customerID = fb.customerID 
 and status IN  ('R','H')and fb.customer_id is not null
 WHERE  leadCustomer.customerID = 8;