我在进行sql查询时遇到了一些问题,无法排除某些重复的行,但原始行的另一种类型数据如下所示。
id uuid type 73 7ddb charge 75 b93d charge 76 b93d cancellation
我只需要有这个数据,不包括费用行的情况下,它存在取消行。
id uuid type 73 7ddb charge 76 b93d cancellation
谢谢你的帮助!
vwoqyblh1#
如果我理解正确,您可以使用:
select t.* from t where t.type = 'cancellation' or not exists (select 1 from t t2 where t2.uuid = t.uuid and t2.type = 'cancellation' );
这将返回 uuid 那些有 'cancellation' . 它还返回 uuid 如果没有这样的争吵。注意:这假设您只有两种类型——您的问题中提到的两种类型。
uuid
'cancellation'
jjjwad0x2#
您可以在此处使用exists逻辑:
SELECT t1.* FROM yourTable t1 WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.uuid = t1.uuid AND t2.type = t1.type AND t2.id > t1.id);
这将为每个 uuid 这样就找不到与此相同的最新记录 uuid ,如果出现重复。这里是最近的记录 uuid 是最伟大的 id 价值观。
id
2条答案
按热度按时间vwoqyblh1#
如果我理解正确,您可以使用:
这将返回
uuid
那些有'cancellation'
. 它还返回uuid
如果没有这样的争吵。注意:这假设您只有两种类型——您的问题中提到的两种类型。
jjjwad0x2#
您可以在此处使用exists逻辑:
这将为每个
uuid
这样就找不到与此相同的最新记录uuid
,如果出现重复。这里是最近的记录uuid
是最伟大的id
价值观。