我使用的软件将只允许我进入的地方.SQL语句的部分。
所以我可以在where子句中使用EXISTS ()语句..。
然而,
这个查询..。
SELECT DISTINCT Left([PR].[WBS1],5)&"-000" AS WBS1
FROM PR
GROUP BY Left([PR].[WBS1],5), Right([PR].[WBS1],3), PR.Status
HAVING ((Right(PR.WBS1,3)<>'000') And ((PR.Status)='A') And (Count(PR.Org))>1)...returns 78唱片.
然而,
实际上,与存在于何处的查询相同.
SELECT PR.WBS1 FROM PR WHERE EXISTS (
SELECT DISTINCT Left([PR].[WBS1],5)&"-000" AS WBS1
FROM PR
GROUP BY Left([PR].[WBS1],5), Right([PR].[WBS1],3), PR.Status
HAVING ((Right(PR.WBS1,3)<>'000') And ((PR.Status)='A') And (Count(PR.Org))>1)
)...returns all 31,114记录。
和我真的不明白为什么。
我做错了什么,有人能给我解释一下吗?
编辑:我可以在这里放什么来返回相同的78条记录:
SELECT * FROM PR WHERE (
?
)我使用的会计软件只允许我编辑“where”部分。
发布于 2021-11-24 17:09:49
如果括号内的子查询至少返回1行,则EXISTS返回TRUE;如果子查询不返回任何行,则返回FALSE。
在您的示例中,子查询返回78行,因此EXISTS返回TRUE。
因此,您的第二个查询相当于:
SELECT PR.WBS1 FROM PR WHERE 1=1 -- any boolean expression that returns TRUE或者简单地说:
SELECT PR.WBS1 FROM PR https://stackoverflow.com/questions/70100111
复制相似问题