SQL 将两个连接表相交
SQL intersect two joined tables
我加入了两个表
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
我怎样才能交叉这些表,这样我就可以得到以下输出(同时具有 A% 和 B% 的 ID)
加入 1
id | col
---┼------
1 | Axxxx
2 | Axxxx
加入 2
id | col
---┼-------
1 | Bxxxx
3 | Bxxxx
最终输出
id | col
---┼-------
1 | Axxxx
1 | Bxxxx
谢谢
根据您的样本,您不需要相交,而是一个简单的并集
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
union
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
在您的 db/sql
处调整 union 的语法
如果我没理解错,你想要的只是同时包含 A% 和 B% 的 ID,那么这就是你的答案
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND ((t1.col LIKE 'A%' AND t2.col like 'B%')
OR (t1.col LIKE 'B%' AND t2.col like 'A%'))
也可以这样尝试...因为您只查找可重复的 ID...您可以从内部 select
开始计算它们
select column1, column2 from (
select column1, column2, count(column1) over (partition by column1) [Counted] from (
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
UNION
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
) src
) src2 where Counted > 1
我加入了两个表
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
我怎样才能交叉这些表,这样我就可以得到以下输出(同时具有 A% 和 B% 的 ID)
加入 1
id | col
---┼------
1 | Axxxx
2 | Axxxx
加入 2
id | col
---┼-------
1 | Bxxxx
3 | Bxxxx
最终输出
id | col
---┼-------
1 | Axxxx
1 | Bxxxx
谢谢
根据您的样本,您不需要相交,而是一个简单的并集
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
union
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
在您的 db/sql
处调整 union 的语法如果我没理解错,你想要的只是同时包含 A% 和 B% 的 ID,那么这就是你的答案
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND ((t1.col LIKE 'A%' AND t2.col like 'B%')
OR (t1.col LIKE 'B%' AND t2.col like 'A%'))
也可以这样尝试...因为您只查找可重复的 ID...您可以从内部 select
开始计算它们select column1, column2 from (
select column1, column2, count(column1) over (partition by column1) [Counted] from (
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'A%'
UNION
SELECT
t1.column1,
t2.column2
FROM
t1 JOIN t2 cu
ON t1.id = t2.id AND t1.col LIKE 'B%'
) src
) src2 where Counted > 1