【发布时间】:2018-07-06 11:46:24
【问题描述】:
我想在 col1 中找到 col2 记录的条目。
表:
CREATE TABLE Test_Table
(
Col1 int,
Col2 int
);
参赛作品:
INSERT INTO Test_Table VALUES(111,112),
(112,113),
(114,115),
(116,117),
(117,118),
(118,119);
预期结果:
Col1 Col2
-------------
111 112
112 113
116 117
117 118
118 119
注意:记录 114,115 未显示,因为 115 不存在于 col1 中。
我的尝试:
WITH CTE1
AS
(
SELECT Col1, Col2
FROM Test_Table
),
CTE2
AS
(
SELECT t.Col1, t.Col2
FROM Test_Table t
INNER JOIN CTE1 s1
ON s1.Col2 = t.Col1
OR s1.Col2 = t.Col2
)
SELECT DISTINCT * FROM CTE2;
但是获取所有记录。
【问题讨论】:
-
113 也不存在于 col1 中,为什么它会出现在您的结果集中?
-
尽管
col1中没有 113,为什么结果中有 (112, 113)? -
@stickybit,但值
112存在,因此需要检索值112的两行。 -
你的逻辑怎么样? 112, 113 有 112 存在于 col1 中,正如 114 存在于 col1 中的 114,115。这两个有什么区别?
-
col1的值(此处为 112)始终存在于col1中。这意味着您只需要所有记录。
标签: sql sql-server sql-server-2008-r2