1

如果我有两个表 -Table_A并且Table_B- 如果我LEFT JOIN用来连接它们,我如何只过滤那些与多次 Table_B连接的行?数据库风格:TeradataTable_A

4

4 回答 4

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

(未测试)

于 2013-03-25T09:32:20.313 回答
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 扩展(也是一个方便的扩展)。

于 2013-03-25T20:32:37.480 回答
0
Select a.*,b.* from Table_A a
left join Table_B b on condition
HAVING COUNT(DISTINCT a.value)>1

进行必要的编辑和检查

于 2013-03-25T09:07:53.350 回答
0

可能对你有帮助

1) you can used INNER JOIN .
2) you can also check joind row is not null or blank . 
于 2013-03-25T09:06:51.393 回答