只有当表中不存在该行的列时,才能将行插入表中的最佳方式是什么。kdb +条件插入:仅在列值不存在时插入
例如为:
q)table:([] col1:(); col2:(); col3:());
q)`table insert (1;2;3);
q)conditionalInsert:{if[first where table.col1=x(0)~0N;`table insert x]};
现在在做的时候以下几点:
q)conditionalInsert[(1;2;3)];
q)conditionalInsert[(7;8;9)];
结果产生:
q)table
col1 col2 col3
--------------
1 2 3
7 8 9
这或许可以更容易地完成。我的问题:什么是最简单/最好的方法?
要清楚:列可能是非键控的列。
或者换句话说:表要么键控或非键控和目标列不是键(或部分的化合物键列)
情景b的确如此。我更新了我的问题。没有比创建函数更简单/更简单的方法吗? –
你在问KDB是否提供了任何内置函数来做到这一点,我不这么认为。即使存在,它也会在后端做同样的事情,或者暂时将该列作为主键并插入。 – Rahul
也许你是对的。我会保持打开一段时间,看看是否有其他答案出现。 –