Sql server 有人能带我一步一步地解决这个问题吗
请有人帮助初学者理解在MS SQL Server中解决此问题的过程。如果你有任何课程,你会推荐,这将是伟大的以及。我吃了一些,但他们没有装备我来解决这个问题。我是初学者。谢谢Sql server 有人能带我一步一步地解决这个问题吗,sql-server,Sql Server,请有人帮助初学者理解在MS SQL Server中解决此问题的过程。如果你有任何课程,你会推荐,这将是伟大的以及。我吃了一些,但他们没有装备我来解决这个问题。我是初学者。谢谢 基本上,您需要执行某种类型的将数据连接到自身(也称为自连接)的操作,以便能够检查给定条件: x1 = y2 and x2 = y1 我们可以使用以下查询获取所有对: DECLARE @DataSource TABLE ( [x] INT ,[y] INT ); INSERT INTO @DataSourc
基本上,您需要执行某种类型的将数据连接到自身(也称为自连接)的操作,以便能够检查给定条件:
x1 = y2 and x2 = y1
我们可以使用以下查询获取所有对:
DECLARE @DataSource TABLE
(
[x] INT
,[y] INT
);
INSERT INTO @DataSource ([x], [y])
VALUES (20, 20)
,(20, 20)
,(20, 21)
,(23, 22)
,(22, 23)
,(21, 20);
WITH DataSource AS
(
SELECT [x]
,[y]
,ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS [RowID]
FROM @DataSource
)
SELECT *
FROM DataSource DS1
INNER JOIN DataSource DS2
ON DS1.[x] = DS2.[y]
AND DS1.[y] = DS2.[x]
WHERE DS1.[RowID] <> DS2.[RowID];
有一点零钱。我们正在寻找这一对,欢迎来到StackOverflow!按照措辞,你的问题不适合这个网站。请阅读。这里的好问题确定了一个可以用特定答案解决的特定编程问题。我将从谷歌搜索SQL对称对问题开始。请,我们需要看看您尝试了什么-您尝试的SQL查询,而这段代码可能会回答这个问题,提供有关如何和/或为什么它解决问题的额外上下文将提高答案的长期值。这里我考虑了两种情况:情况1:如果X和Y相等,表中必须至少有2个条目,我在tempa表中考虑了这些情况。情况2:如果x1= y2和y1= x2,例如:1,2和2,1,那么我们只需要考虑1,2,排除2,1。表tempb中考虑了这些情况。最后,我对案例1和案例2进行并集,并按x对结果进行排序。我希望这个解释能让你更容易理解。
SELECT DISTINCT [x]
,[y]
FROM @DataSource DS1
WHERE EXISTS
(
SELECT 1
FROM @DataSource DS2
WHERE DS1.[x] = DS2.[y]
AND DS1.[y] = DS2.[x]
AND DS1.[X] <= DS2.[x]
)
ORDER BY [x];
SELECT DISTINCT DS1.[x]
,DS1.[y]
FROM @DataSource DS1
INNER JOIN @DataSource DS2
ON DS1.[x] = DS2.[y]
AND DS1.[y] = DS2.[x]
AND DS1.[x] <= DS2.[x]
ORDER BY DS1.[x];
/* Case 1: Cases where x=y and have more than one record */
with tempa as
(
select x,y
from functions
where x=y
group by x,y
having count(*)>=2
),
/* Case 2: Where x=y and y=x and x<>y */
tempb as
(
select distinct A_X,A_Y from
(
select distinct a.x as A_X,a.y as A_Y, b.y as B_Y,b.x as B_X
from functions a inner join functions b
on a.x=b.y and a.y=b.x
)
where A_X<B_X
)
select * from
(
select * from tempa
union
select * from tempb
)
order by 1;