【发布时间】:2015-04-25 18:12:39
【问题描述】:
好的,情况如下: 我将以下数据放在一个表格中。
PAIR_NO NO NO2
3 5678EFGH 1234ABCD
4 1111BBBB 0000AAAA
1 1234ABCD 5678EFGH
2 0000AAAA 1111BBBB
约束条件是如果 no = no2 在另一行中跳过该行。 因此,在此示例数据中,将选择的唯一行应该是第 3 和第 4 对。
我曾尝试与 self 合并和内部连接,但我只是不断地取回所有 4 行。
我试图插入一个不存在的表中,但我再次插入了 4 行。
SELECT a.* from PAIRS a
inner join PAIRS b on a.no=b.no2 and a.no2=b.no;
我在想也许可以从第 1 列中选择不同的数字,然后检查第 2 列中的数字,但我认为这会产生相同的四行。
我可能想多了这个问题,也许这里的一些人可以看看这个,看看解决方案隐藏在哪里。
我目前正在 MySQL 上对此进行测试,但它应该在 SQLServer 2008 上运行。我已经搜索过,但所有问题似乎都与我的数据集问题不匹配。
【问题讨论】:
-
注意:对于您提供的所有 4 行,
NO和NO2之间的任何其他行都匹配。我不知道你怎么认为应该只选择第 3 对和第 4 对。 -
如果我在 C# 中执行此操作,我将为行创建一个保存对象。
-
如果我在 C# 中执行此操作,我将为行创建一个保存对象。然后,当我循环每一行时,测试 - 第 1 列是否与持有对象中的第 2 列匹配。如果它不存在,则添加到持有对象。但是我需要尝试在 SQL 中重新创建它,并且我试图避免使用 WHILE 循环(当我处理更多记录时太慢了)。
标签: mysql sql sql-server compare