同时比较表new和表old中的2个字段a和b,求表new中有而old中没有的记录

请教这个sql怎么写比较高效呢?
同时比较表new和表old中的2个字段a和b,求表new中有而old中没有的记录,其中new是共享表,old是普通内存表,两者字段完全一样,两个表中字段a的值各自都是唯一的,但是总的记录的行数可能不一样.不过总的行数都在1万以内.。我现在是将new全部append到old中通过isDuplicated去重选最后的记录,
不知道是不是有表链接的方法更高效,我试了网上的相关例子,但是没找到在dolphindb这里可以跑的。

这个在kdb+里可以把table当作dict的list用except运算来快速实现。在ddb里找找有没有类似的函数?

请先 登录 后评论

1 个回答

wale

可用makeKey函数,例如:

tmp = table(1 3 4 5 6 as a, take(`A`B, 5) as b, rand(10.0, 5) as val)
share tmp as new
old = table(2 3 4 7 8 as a, take(`A`B, 5) as b, rand(10.0, 5) as val)
select * from new where makeKey(a, b) not in makeKey(old.a, old.b)
请先 登录 后评论