SQL 的 EXISTS 函数 select 是否重复? (甲骨文 SQL)
Does SQL's EXISTS function select duplicates? (Oracle SQL)
t1
拥有给定ORACLE数据库中每个人的所有学分。每个人都由 ID
标识。 t2
包含我需要 select 来自 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 次,那么上面的查询 select 她的每个学分是否会重复 4 次?也就是说,ID = 2
我会得到 3 x 4 学分吗?
通常,我会从结果中计算重复的学分,但我目前没有 selected 学分的唯一标识符。这就是我在这里问这个而不是尝试从查询结果中按计数分组的原因。
没有。您只编写了来自 t1
的 returns 行的查询。您不能使用 where
子句来乘以行(好吧,几乎从不,也不在 Oracle
中)。
使用 exists
或 in
的一个原因是您不必担心重复,就像 join
.[=16 需要担心的那样=]
否 - 将 exists
视为 True/False 函数。正确:returns >0 行;错误:returns 0 行。所以有没有重复也没关系
t1
拥有给定ORACLE数据库中每个人的所有学分。每个人都由 ID
标识。 t2
包含我需要 select 来自 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 次,那么上面的查询 select 她的每个学分是否会重复 4 次?也就是说,ID = 2
我会得到 3 x 4 学分吗?
通常,我会从结果中计算重复的学分,但我目前没有 selected 学分的唯一标识符。这就是我在这里问这个而不是尝试从查询结果中按计数分组的原因。
没有。您只编写了来自 t1
的 returns 行的查询。您不能使用 where
子句来乘以行(好吧,几乎从不,也不在 Oracle
中)。
使用 exists
或 in
的一个原因是您不必担心重复,就像 join
.[=16 需要担心的那样=]
否 - 将 exists
视为 True/False 函数。正确:returns >0 行;错误:returns 0 行。所以有没有重复也没关系