2

下面是场景,

表 A

---------------------
| 第 1 栏 | 第 2 栏  
---------------------
| 1 | 2      
---------------------
| 3 | 4           
---------------------
| 2 | 1             
---------------------
| 4 | 3           
---------------------

在 col 1 中有一些数据'1',在 col 2 中有一些数据'2'。在同一个表中还有另一行,这些值是互换的。如何使用 SQL 查询获得如下输出

输出

--------------------------
| 第 1 栏 | 第 2 栏 |
--------------------------
| 1 | 2 |
--------------------------
| 3 | 4 |
--------------------------

任何人都可以帮我为此编写 SQL 查询吗?

4

1 回答 1

4

一种选择是

SELECT a.col1, a.col2
  FROM tableA a
 WHERE NOT EXISTS( SELECT 1
                     FROM tableA b
                    WHERE a.col1 = b.col2
                      AND a.col2 = b.col1
                      AND a.col1 > b.col1 );

产生你想要的输出

SQL> ed
Wrote file afiedt.buf

  1  with tableA as (
  2    select 1 col1, 2 col2 from dual union all
  3    select 3, 4 from dual union all
  4    select 2, 1 from dual union all
  5    select 4, 3 from dual
  6  )
  7      SELECT a.col1, a.col2
  8        FROM tableA a
  9       WHERE NOT EXISTS( SELECT 1
 10                           FROM tableA b
 11                          WHERE a.col1 = b.col2
 12                            AND a.col2 = b.col1
 13*                           AND a.col1 > b.col1 )
SQL> /

      COL1       COL2
---------- ----------
         1          2
         3          4
于 2013-10-12T05:06:56.860 回答