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