在sql中,我们需要从表中过滤不必要的数据:案例1:如果两个ID相同,dod不为空,则需要记录情况2:如果有一个id,dod不为空,则需要记录情况3:如果两个ID相同,并且其中任何一个的dod为空,则不需要记录非常感谢你的帮助。谢谢
anauzrmj1#
您可以为此使用分析函数:
select t.* from ( select t.*, sum(case when dod is null then 1 else 0 end) over(partition by id) no_nulls from mytable t ) t where no_nulls = 0
注意,这也排除了没有重复记录的记录 id 但是谁的 dod 是 null (您没有描述如何处理这些问题)。你也可以用 not exists (可以方便地变成 delete 声明(如需要):
id
dod
null
not exists
delete
select t.* from mytable t where not exists(select 1 from mytable t1 where t1.id = t.id and t1.dod is null) where no_nulls = 0
1条答案
按热度按时间anauzrmj1#
您可以为此使用分析函数:
注意,这也排除了没有重复记录的记录
id
但是谁的dod
是null
(您没有描述如何处理这些问题)。你也可以用
not exists
(可以方便地变成delete
声明(如需要):