只有當表中不存在該行的列時,才能將行插入表中的最佳方式是什麼。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
也許你是對的。我會保持打開一段時間,看看是否有其他答案出現。 –