【问题标题】:how to intersect two "selects" and then put another condition for the result如何相交两个“选择”,然后为结果设置另一个条件
【发布时间】:2010-06-02 17:09:03
【问题描述】:

我想交叉两个“选择”查询,然后为整个结果设置另一个条件。我的意思是:

(select ... intersect select ...) where ...

有可能吗?

【问题讨论】:

    标签: sql intersection


    【解决方案1】:

    取决于你的数据库风格 Oracle(例如)将允许这样做:

    SELECT *
      FROM ( SELECT *
               FROM TABLE_A
             INTERSECT
             SELECT *
               FROM TABLE_B
           )
    WHERE <conditions>
    

    【讨论】:

      【解决方案2】:

      Select * From (select ... intersect select ...) as intersectedTable where ...

      【讨论】:

        【解决方案3】:

        您想使用派生表。

            SELECT value,data FROM
            (SELECT value,data FROM table1 union select value,data from table2) t
            WHERE value=5;
        

        【讨论】:

          【解决方案4】:

          由于您是相交的,因此您对两个 SELECT 中的任何一个设置的任何条件也将适用于整个条件...

          所以,最简单的方法就是

          SELECT ... FROM ... WHERE (condition)
          INTERSECT
          SELECT ... FROM ... WHERE (another condition)        
          

          【讨论】:

            猜你喜欢
            • 2022-01-17
            • 1970-01-01
            • 2014-01-29
            • 2015-04-30
            • 2011-03-13
            • 1970-01-01
            • 2021-04-08
            • 2019-05-05
            • 2020-09-20
            相关资源
            最近更新 更多