LEFT JOIN FIlter

时间:2013-03-25 08:58:15

标签: sql teradata

如果我有两个表 - Table_ATable_B - 并且如果我使用LEFT JOIN加入它们,我该如何仅过滤Table_B中加入的那些行Table_A中的行不止一次?
DB风味:Teradata

4 个答案:

答案 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

进行必要的编辑并检查