SQL Server - 来自多个(2)列的不同值

TPR*_*TPR 0 sql sql-server distinct

假设我有两列整数,A和B.现在我想从这些中得到不同的值,这意味着如果A和B都有1,我只需要1次.

注意:我对获得不同的行不感兴趣.我只想从这个表中获得唯一的整数值,可以是A或B

我可以在某个临时表的一列中插入A和B的值,并对该列执行select选择.

有什么更复杂的(表现性的)?

mar*_*c_s 6

我认为这样的事情应该有效:

选择所有不同的A,然后所有不同的B'UNION ALL这两个集合从该工会化结果集中选择DISTINCT SELECT DISTINCT*FROM(SELECT DISTINCT A FROM YourTable UNION ALL SELECT DISTINCT B from YourTable)

在Lukáš的帮助下,您可以简单地写道:

     SELECT A FROM YourTable
     UNION 
     SELECT B FROM YourTable
Run Code Online (Sandbox Code Playgroud)

因为他理所当然地指出,常规的UNION没有重复.你甚至不需要在你的个人SELECT上有一个DISTINCT子句 - 非常巧妙!谢谢,Lukáš!

  • 你甚至不需要在内部查询上使用`DISTINCT`. (3认同)
  • 如果将`UNION ALL`更改为`UNION`,则可以避免外部查询,因为`UNION`本身将仅返回不同的值. (2认同)