SQL的EXISTS函数是否选择重复项? (Oracle SQL)

问题描述 投票:0回答:2

t1在给定的ORACLE数据库中拥有每个人的所有功劳。每个人都由ID标识。 t2包含我需要从t1中选择的人。

为此,我尝试了以下操作:

select
    ID,
    capital,
    balance
from
    t1
where
    exists (
        select ID
        from t2
        where t1.ID = t2.ID);

我的问题是t2具有重复的ID。因此,例如,如果ID = 2有3个学分,并且在t2中重复了4次,那么上面的查询是否会选择4次她的每个学分?也就是说,ID = 2我将获得3 x 4积分吗?

通常,我会从结果中计算出重复的学分,但是我目前没有所选学分的唯一标识符。这就是我在这里询问此问题的原因,而不是尝试从查询结果中按计数分组。

sql oracle exists
2个回答
2
投票

没有您编写的查询仅返回t1中的行。您不能使用where子句将行相乘(好吧,几乎从不,并且不在Oracle中)。

使用existsin的一个原因是,您不必担心重复,而您需要担心使用join的方式。


1
投票

否-将exists视为对/错函数。 True:返回> 0行; False:返回0行。因此,是否有重复都没关系。

© www.soinside.com 2019 - 2024. All rights reserved.