在SQL中选择不同的值对

时间:2013-10-07 08:43:46

标签: sql ms-access ms-access-2010

我有一个Access 2010数据库,用于存储源和目标计算机的IP地址。如果我的数据库中有以下条目

|source           |   destination|
|--------------------------------|
|  A              |     B        |
|  B              |     A        |
|  A              |     B        |
|  C              |     D        |
|  D              |     D        |

是否有任何查询可以选择唯一对?也就是说,查询的输出应为

|source           |     destination|
|----------------------------------|
|  A              |          B     |
|  C              |          D     |

3 个答案:

答案 0 :(得分:7)

你的问题似乎暗示了两件事:

  1. 列出源/目的地对时,您只想在一个方向上看到对,例如(A,B)但不是(B,A)。

  2. 列表应省略源和目的地相同的对,例如(D,D)

  3. 在这种情况下,查询......

    SELECT DISTINCT source, destination
    FROM
        (
                SELECT source, destination
                FROM SomeTable
            UNION ALL
                SELECT destination, source
                FROM SomeTable
        )
    WHERE source < destination
    

    ...针对包含...的

    source  destination
    ------  -----------
    A       B          
    B       A          
    A       B          
    C       D          
    D       D          
    E       D          
    

    ...将产生:

    source  destination
    ------  -----------
    A       B          
    C       D          
    D       E          
    

答案 1 :(得分:0)

从YourTable

中选择唯一的来源,目的地

从YourTable中选择不同的来源,目的地

从YourTable中选择来源,目的地 按来源分组,目的地

答案 2 :(得分:0)

使用GROUP BY子句

SELECT  source, destination 
FROM SomeTable
GROUP BY source, destination