【问题标题】:Using IN with Multiple Values in Oracle (Column_A,Column_B) IN (M,M)在 Oracle (Column_A,Column_B) IN (M,M) 中将 IN 与多个值一起使用
【发布时间】:2020-04-24 17:03:53
【问题描述】:

我正在尝试根据两个值过滤掉记录。

我正在使用的表有学生帐户。我正在查看的两列应满足以下条件。

  • 当 Column_A 包含帐户 (1310001,1320002,4520004,6170004) 时,Column_B 不能包含帐户 (1310001,1320002,4520004,6170004) 和以 (12,119,03,02) 开头的帐户。

  • 当 Column_B 包含帐户 (1310001,1320002,4520004,6170004) 时,Column_A 不能包含帐户 (1310001,1320002,4520004,6170004) 和以 (12,119,03,02) 开头的帐户。

请告诉我如何用 SQL 编写它。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    我会将你的逻辑表达为:

    SELECT *
    FROM yourTable
    WHERE
        (
            Column_A IN (1310001,1320002,4520004,6170004) AND
            Column_B NOT IN (1310001,1320002,4520004,6170004) AND
            NOT REGEXP_LIKE(Column_B, '^(12|119|03|02)')
        ) AND
        (
            Column_B IN (1310001,1320002,4520004,6170004) AND
            Column_A NOT IN (1310001,1320002,4520004,6170004) AND
            NOT REGEXP_LIKE(Column_A, '^(12|119|03|02)')
        );
    

    【讨论】:

    • @Samrox 。 . .当我阅读问题时,您希望在条件之间使用AND,而不是OR
    • @GordonLinoff AND 我最初也是这样,直到 OP 要求我更改它。
    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多