Robert Kubrick
Robert Kubrick

Reputation: 8743

How to delete random rows from a kdb table?

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.

Upvotes: 5

Views: 4197

Answers (3)

skeevey
skeevey

Reputation: 641

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.

Upvotes: 9

JPC
JPC

Reputation: 1919

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

Upvotes: 4

mnestor
mnestor

Reputation: 319

delete from mytable where i<10

Upvotes: 0

Related Questions