我正在使用Access中的联结表(实际上是一个定义父>子关系的自联接表),并且遇到了一些我需要创建的联接时遇到的问题。这个SQL有什么问题(使用IN的子查询)?
目前,我有以下在一个查询:
(SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2))
UNION (SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE (ParentAccountTypeID IN (1, 2)));
哪个正常的工作原理:它提供的AccountID
为什么会产生AccountTypeID
为1或2,或一个列表,其中该帐户是另一个帐户与孩子AccountTypeID
= 1或2。
当我然后尝试使用此为子查询,以找到与此相关的结果,像这样其它字段值:
SELECT AccountName
FROM qryAccountNamesConcat
WHERE AccountID IN(
(
SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2)
)
UNION (
SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE (ParentAccountTypeID IN (1, 2))
)
);
我得到错误:"Syntax error (missing operator) in query expression 'AccountID IN(...."
然后继续列表直到声明的结尾。
我试过它的变体,似乎无法让它工作。这可能是我完全误解了如何以这种方式将子查询放在一起。
编辑:现在修复了在(ParentAccountTypeID IN (1, 2))
末尾丢失的括号,但仍然得到相同的错误。
你在'WHERE(ParentAccountTypeID IN(1,2)' – Compass 2014-10-07 14:48:28