Search code examples
kdb

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.


Solution

  • 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.