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积分吗?
通常,我会从结果中计算出重复的学分,但是我目前没有所选学分的唯一标识符。这就是我在这里询问此问题的原因,而不是尝试从查询结果中按计数分组。
没有您编写的查询仅返回t1
中的行。您不能使用where
子句将行相乘(好吧,几乎从不,并且不在Oracle
中)。
使用exists
或in
的一个原因是,您不必担心重复,而您需要担心使用join
的方式。
否-将exists
视为对/错函数。 True:返回> 0行; False:返回0行。因此,是否有重复都没关系。