如果我有两个表 - Table_A
和Table_B
- 并且如果我使用LEFT JOIN
加入它们,我该如何仅过滤Table_B
中加入的那些行Table_A
中的行不止一次?
DB风味:Teradata
答案 0 :(得分:1)
如果我没弄错,Teradata支持窗口功能,所以这可能有效:
select *
from (
select a.*,
b.*
count(*) over (partition by a.MyCol) as cnt
from Table_A a
left join Table_B b ON a.MyCol = b.MyCol
where ... -- Conditions
) t
where cnt > 1
(未经测试)
答案 1 :(得分:1)
以下是您接受的答案的Teradata特定版本:
select a.*,
b.*
from Table_A a
left join Table_B b
ON a.MyCol = b.MyCol
where ... -- Conditions
QUALIFY count(*) over (partition by a.MyCol) > 1
请注意QUALIFY
是ANSI标准的Teradata扩展(并且是一个方便的扩展)。
答案 2 :(得分:0)
可能对你有所帮助
1) you can used INNER JOIN .
2) you can also check joind row is not null or blank .
答案 3 :(得分:0)
Select a.*,b.* from Table_A a
left join Table_B b on condition
HAVING COUNT(DISTINCT a.value)>1
进行必要的编辑并检查