Sql 删除包含可能包含相同数据的两列的行
以以下数据为例Sql 删除包含可能包含相同数据的两列的行,sql,sql-server,tsql,Sql,Sql Server,Tsql,以以下数据为例 Letter One | Letter Two A | B B | A A | C 如何只选择具有相同数据的任何行,因此在本例中,我希望输出删除第二行,因为这两个字母是相同的。 所以我的输出是: Letter One | Letter Two A | B A | C 假设没有精确的副本,您可以执行以下操作: select letterA, letterB from t wher
Letter One | Letter Two
A | B
B | A
A | C
如何只选择具有相同数据的任何行,因此在本例中,我希望输出删除第二行,因为这两个字母是相同的。
所以我的输出是:
Letter One | Letter Two
A | B
A | C
假设没有精确的副本,您可以执行以下操作:
select letterA, letterB
from t
where letterA <= letterB
union all
select letterA, letterB
from t
where letterA > letterB and
not exists (select 1 from t t2 where t2.letterA = t.letterB and t2.letterB = t.letterA);
select distinct (case when letterA <= letterB then letterA else letterB end) as letterA,
(case when letterA > letterB then letterA else letterB end) as letterB
from t;
如果不关心最后一列的顺序,可以执行以下操作:
select letterA, letterB
from t
where letterA <= letterB
union all
select letterA, letterB
from t
where letterA > letterB and
not exists (select 1 from t t2 where t2.letterA = t.letterB and t2.letterB = t.letterA);
select distinct (case when letterA <= letterB then letterA else letterB end) as letterA,
(case when letterA > letterB then letterA else letterB end) as letterB
from t;
假设没有精确的副本,您可以执行以下操作:
select letterA, letterB
from t
where letterA <= letterB
union all
select letterA, letterB
from t
where letterA > letterB and
not exists (select 1 from t t2 where t2.letterA = t.letterB and t2.letterB = t.letterA);
select distinct (case when letterA <= letterB then letterA else letterB end) as letterA,
(case when letterA > letterB then letterA else letterB end) as letterB
from t;
如果不关心最后一列的顺序,可以执行以下操作:
select letterA, letterB
from t
where letterA <= letterB
union all
select letterA, letterB
from t
where letterA > letterB and
not exists (select 1 from t t2 where t2.letterA = t.letterB and t2.letterB = t.letterA);
select distinct (case when letterA <= letterB then letterA else letterB end) as letterA,
(case when letterA > letterB then letterA else letterB end) as letterB
from t;
工会将过滤掉重复的。 最低值将在第一列中返回:
SELECT LetterOne, LetterTwo
FROM <table>
WHERE LetterOne < LetterTwo
UNION
SELECT LetterTwo, LetterOne
FROM <table>
WHERE LetterTwo<=LetterOne
工会将过滤掉重复的。 最低值将在第一列中返回:
SELECT LetterOne, LetterTwo
FROM <table>
WHERE LetterOne < LetterTwo
UNION
SELECT LetterTwo, LetterOne
FROM <table>
WHERE LetterTwo<=LetterOne
到目前为止你试过什么?发布您的查询,以便我们可以帮助您。@WEI_DBA编辑!您要选择还是删除?@jarlh已选择是否可以按相同顺序复制数据?比如两行,其中LetterOne=A和LetterTwo=b,到目前为止你试过什么?发布您的查询,以便我们可以帮助您。@WEI_DBA编辑!您要选择还是删除?@jarlh已选择是否可以按相同顺序复制数据?就像两行的LetterOne=A和LetterTwo=BGreat一样,我用了你的第二个答案,它成功了。你能解释一下它是如何工作的吗?或者给我指出一个资源的方向吗?太好了,我用了你的第二个答案,它工作了。你能解释一下它是如何工作的吗?或者让我看一下资源的方向吗?这只适用于选择包含双硅酸盐的行,但不包括a | C行这不包括包含D的行这只适用于选择包含双硅酸盐的行,但不包括a | C行这不包括包含D | a的行