T-Sql查询 - 获取2列的唯一行

Jai*_*han 5 sql t-sql

我有一组数据,列x和y.该集合包含行,对于任何2个给定值A和B,在x和y列中分别有一行A和B,并且在x和y列中将分别有第二行B和A.

例如

        **Column X**            **Column Y**
Row 1        A                       B
Row 2        B                       A             
Run Code Online (Sandbox Code Playgroud)
  • 此集合中有多对数据符合此规则.
  • 对于列X和Y中具有A,B的每一行,在X和Y中将始终存在具有B,A的行
  • 列X和Y的类型为int

我需要一个T-Sql查询,给出一个带有上述规则的集合将返回第1行或第2行,但不是两者.

答案是非常困难的,或者它很容易让我无法看到森林中的树木,无论是哪种方式都让我爬上了墙.

tpd*_*pdi 9

添加到您的查询谓词,

where X < Y
Run Code Online (Sandbox Code Playgroud)

你永远不会得到第二行,但总会得到第一行.

(这假定当您编写"两个给定值"时,您意味着两个不同的给定值;如果两个值可以相同,则添加谓词where X <= Y(以去掉所有"反向"行,其中X> Y)然后添加一个distinct到您的选择列表(将X == Y的任意两行折叠成一行).)

在回复评论时:

也就是说,如果当前您的查询是select foo, x, y from sometable where foo < 3;将其更改为select foo, x, y from sometable where foo < 3 and x < y;,或者针对第二种情况(其中X和Y不是不同的值)select distinct foo, x, y from sometable where foo < 3 and x <= y;.