Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete random rows from a kdb table?

Tags:

kdb

How can I delete the first 10 rows from a kdb table? I want to delete specifically the first 10 rows returned from:

select [10] from mytable

I tried to use delete with the i index but the count of rows does not decrease:

count mytable
2201784
delete from mytable where i < 10
count mytable
2201784

Also the delete statement returns a number of rows to my Q console, not sure what that is.

like image 382
Robert Kubrick Avatar asked Jun 04 '13 11:06

Robert Kubrick


2 Answers

If you want to delete in-place from the table, you should reference it by name.

delete from `mytable where i < 10

Alternatively, reassign:

mytable:delete from mytable where i<10

When you run delete from mytable where i<10, it returns the table with the changes applied but does not apply them to mytable stored in memory.

http://code.kx.com/q/cookbook/faq/#how-do-i-delete-rows-from-a-table

The resources at http://code.kx.com answer many questions regarding day-to-day use of kdb.

like image 116
skeevey Avatar answered Sep 21 '22 02:09

skeevey


you can use the drop operator _ on the table, and have 10 as your LHS argument mytable:10 _mytable

like image 42
JPC Avatar answered Sep 23 '22 02:09

JPC