Удалить строки таблицы, если они не существуют в другой таблице, и требуется дополнительное "где" - PullRequest
0 голосов
/ 18 июня 2020

У меня проблемы с удалением некоторых строк таблицы на основе таблицы транспортных средств и таблицы заказов. Как я могу сделать это плавно, если я знаю, что в таблице транспортных средств я хочу удалить только строки, в которых есть столбец клиента = '14888'?

Я пробую что-то вроде этого:

DELETE FROM VEHICLE
WHERE NOT EXISTS (
    SELECT *
    FROM ORDER
    WHERE ORDERCUSTOMER=VEHICLE.CUSTOMER
)
AND VEHICLE.CUSTOMER = '14888'

Это не дает мне строк, что я делаю не так?

TABLE VEHICLE:
COL1: REG_NO     COL2:CUSTOMER     COL3:NOTE
AA001            14888             TEXT
AA002            15000             TEXT
AA003            14888             TEXT
AA004            14888             TEXT

TABLE ORDER:
COL1:ORDERNO      COL2:CUSTOMER    COL3:REGNO
001               15000            AA002 
002               14888            AA001
003               14888            AA003

Я хочу удалить строку VEHICLE не по порядку и только для клиента 14888. В этом случае мне нужно удалить только одну линия и та, у которой REGNO = AA004. Возможно, мне придется включить сюда REGNO, чтобы заставить его работать?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020
DELETE FROM VEHICLE
WHERE VEHICLE.CUSTOME NO IN (
    SELECT ORDERCUSTOMER
    FROM ORDER
)
AND VEHICLE.CUSTOMER = '14888'
0 голосов
/ 18 июня 2020

Попробуйте следующее, указав условие and в exists.

DELETE FROM VEHICLE
WHERE NOT EXISTS (
    SELECT *
    FROM ORDER
    WHERE ORDER.CUSTOMER=VEHICLE.CUSTOMER
    AND ORDER.CUSTOMER = '14888'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...