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