复杂的SQL查询(DELETE)?

时间:2010-03-12 08:58:10

标签: sql ms-access

我正在使用三个表,为了简单起见,我们将它们称为表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')

但这显然不起作用。是否有任何方法可以进行单个复杂查询,或者我必须运行三个查询,其中我首先使用带有'myvalue'的SELECT获取A.id的值,然后对B.id使用相同的值,然后使用最后的询问?
[编辑:这不是让我发表评论,所以在回复第一条评论时:我尝试了上面的查询,但它没有用,我认为它在语法上不正确。使用MS Access,它的价值。 ]

1 个答案:

答案 0 :(得分:0)

您必须使用IN代替=。

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