我想知道如何在2个不同的表中获得2列之间的组合,不包括Table1中的值与使用SQL Server 2016或2017的Table2中的值之间的组合?
我需要结合Table1中的id2和Table2中的id。
要获得结果,我使用此查询:
WITH CTE AS (
SELECT id2 AS col FROM Table1
UNION
SELECT id AS col FROM Table2
)
SELECT c1.col, c2.col
FROM CTE c1
CROSS JOIN CTE c2
WHERE c1.col < c2.col
ORDER BY c1.col, c2.col
|id |id2|
| 1 | 1 |
| 2 | 2 |
|id |
| 3 |
| 4 |
|id |id2|
| 1 | 3 | - correct combination
| 2 | 3 | - correct combination
| 1 | 4 | - correct combination
| 2 | 4 | - correct combination
|id |id2|
| 1 | 3 | - correct combination
| 2 | 3 | - correct combination
| 1 | 4 | - correct combination
| 2 | 4 | - correct combination
| 1 | 2 | - incorrect combination from Table 1
| 3 | 4 | - incorrect combination from Table 2
答案 0 :(得分:2)
您似乎想要:
SELECT t1.id, t2.id
FROM Table1 t1 CROSS JOIN
Table2 t2;
我不知道你为什么要将所有id组合成一个结果集,然后对它进行交叉连接。结果似乎基于简单的CROSS JOIN
。