【问题标题】:Does SQL's EXISTS function select duplicates? (Oracle SQL)SQL 的 EXISTS 函数是否选择重复项? (甲骨文 SQL)
【发布时间】:2020-07-17 02:11:49
【问题描述】:

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

为此,我尝试了以下方法:

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

我的问题是t2 有重复的IDs。例如,如果ID = 2 有 3 个学分,她在t2 中重复了 4 次,那么上面的查询会选择她的每个学分 4 次吗?也就是说,ID = 2 会有 3 x 4 学分吗?

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

【问题讨论】:

    标签: sql oracle exists


    【解决方案1】:

    没有。您编写的查询仅返回来自t1 的行。您不能使用 where 子句将行相乘(嗯,几乎从不,也不会在 Oracle 中)。

    使用existsin 的一个原因是您不必担心重复,就像使用join 时需要担心的那样。

    【讨论】:

      【解决方案2】:

      否 - 将 exists 视为 True/False 函数。 True:返回 >0 行; False:返回 0 行。所以有没有重复也没关系。

      【讨论】:

        猜你喜欢
        • 2017-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 2022-09-23
        相关资源
        最近更新 更多