Сложные запросы SQL (DELETE)? - PullRequest
       3

Сложные запросы SQL (DELETE)?

1 голос
/ 12 марта 2010

Я работаю с тремя таблицами, и для простоты назовем их таблицами A, B и C. Обе таблицы A и B имеют столбец с именем id, а также еще один столбец, Aattribute и Battribute, соответственно. Столбец c также имеет столбец id и два других столбца, которые содержат значения для A.id и B.id. Теперь в моем коде у меня есть легкий доступ к значениям как для Aattribute, так и для Battribute, и я хочу удалить строку в C, поэтому эффективно я хочу сделать что-то вроде этого:

DELETE FROM C WHERE aid=(SELECT id FROM A WHERE Aattribute='myvalue') AND bid=(SELECT id FROM B WHERE Battribute='myothervalue')

Но это, очевидно, не работает. Есть ли способ сделать один сложный запрос, или мне нужно выполнить три запроса, где я сначала получаю значение A.id, используя SELECT с «myvalue», затем то же самое для B.id, затем использую те в последний запрос?
[Изменить: это не позволяет мне комментировать, поэтому в ответ на первый комментарий по этому поводу: я попробовал вышеуказанный запрос, и он не работал, я подумал, что он просто не был синтаксически правильным. Использование MS Access, для чего это стоит. ]

1 Ответ

0 голосов
/ 12 марта 2010

Вы должны использовать IN вместо =.

DELETE
FROM   C
WHERE  aid IN
       (SELECT id
       FROM    A
       WHERE   Aattribute='myvalue'
       )
AND    bid IN
       (SELECT id
       FROM    B
       WHERE   Battribute='myothervalue'
       )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...