kdb - 除了 kdb 中的表之外的实用程序
问题描述
由于我们在 kdb 中具有用于列表的除函数来查找存在于一个列表中而不存在于另一个列表中的元素,同样我们是否有任何实用程序可以根据列提取一个表中存在的行而不是另一个表中的行?
例如:我有两张桌子:
l:([]c1:`a`b`c`d;c2:10 20 30 40)
r:([]c1:`a`a`a`b`b;c3:100 200 300 400 50)
因为,对于表 l 中的 c1 列,我们有c d
在表 r 的 c1 列中不存在的行。
我们在 kdb 中是否有任何实用程序可用于获取如下输出?
c1 c2
-----
c 30
d 40
我使用 -
select from l where c1 in l[`c1] except r`c1
但是,我正在寻找更好/优化的解决方案/实用程序来获得相同的输出。
解决方案
我认为您当前的实现没有任何问题,但您可以在键控表上使用drop
(aka _
) 以获得更简洁的方法:
q)#[1#`c1;r]_1!l
c1| c2
--| --
c | 30
d | 40
当他们的“关键”不止一列时,这也很整洁:
l0:([]c0:`x`y`z`w;c1:`a`b`c`d;c2:10 20 30 40)
r0:([]c0:`y`x`x`x`y;c1:`a`a`a`b`b;c3:100 200 300 400 50)
q)#[`c0`c1;r0]_2!l0
c0 c1| c2
-----| --
z c | 30
w d | 40
推荐阅读
- qt - QML以编程方式将ListView中的ExclusiveGroup设置为RadioButton
- mongodb - 如何在与子对象匹配的 where 子句中最好地获取 MongoDB [mongoos] 上的排序文档?
- mysql - 获取 mysql 中 2 个查询的计数差异
- javascript - 如何从 PHP 中保存 Javascript 变量信息
- r - 强制 cell_clicked 从预先指定的列返回值
- mysql - Mysql/MariaDB 触发问题和调试
- ffmpeg - ffmpeg 获取帧时间戳
- c# - 使用 TempData 从 MVC 操作将字符串值添加到 ViewBag 时出现问题
- javascript - 需要为小漫画制作网格
- ios - iOS - UITabBar 在显示启动 iOS 12.1 时出现故障