【问题标题】:selecting distinct pairs of values in SQL在 SQL 中选择不同的值对
【发布时间】:2013-10-13 18:18:25
【问题描述】:

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

|来源 |目的地| |--------------------------------| |一个 |乙| |乙|一个 | |一个 |乙| | C | D | | D | D |

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

|来源 |目的地| |----------------------------------| |一个 |乙| | C | D |

【问题讨论】:

  • SELECT 语句中添加 distinct 可以解决这个问题。

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


【解决方案1】:

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

  1. 列出源/目标对时,您只想查看一个方向的对,例如 (A,B) 而不是 (B,A)。

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

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

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

...当针对包含...的 [SomeTable] 运行时

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

...将产生:

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

【讨论】:

  • 您好,感谢您的回复。表中的最后一项是错误的。它应该是 D 到 C。无论如何,我会检查您的查询并将其标记为答案,如果它对我有用。
【解决方案2】:

从 YourTable 中选择唯一的来源、目的地

从 YourTable 中选择不同的源、目标

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

【讨论】:

    【解决方案3】:

    使用GROUP BY 子句

    SELECT  source, destination 
    FROM SomeTable
    GROUP BY source, destination 
    

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多