【问题标题】:How to delete random rows from a kdb table?如何从 kdb 表中删除随机行?
【发布时间】:2013-06-04 11:56:47
【问题描述】:

如何从 kdb 表中删除前 10 行?我想专门删除从以下位置返回的前 10 行:

select [10] from mytable

我尝试对 i 索引使用 delete,但行数没有减少:

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

delete 语句还向我的 Q 控制台返回了一些行,但不确定那是什么。

【问题讨论】:

    标签: kdb


    【解决方案1】:

    如果要从表中就地删除,则应按名称引用它。

    delete from `mytable where i < 10
    

    或者,重新分配:

    mytable:delete from mytable where i<10
    

    当您运行delete from mytable where i&lt;10 时,它会返回应用了更改的表,但不会将它们应用到内存中存储的mytable

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

    http://code.kx.com 的资源回答了许多有关 kdb 日常使用的问题。

    【讨论】:

      【解决方案2】:

      您可以在桌子上使用drop 运算符_,并将10 作为您的LHS 参数 mytable:10 _mytable

      【讨论】:

        【解决方案3】:
        delete from mytable where i<10
        

        【讨论】:

        • 你确定吗? count md (2201784i); delete from md where i &lt; 100; count md (2201784i)。此外,使用where i&lt;100 条件的删除语句在我的 q 控制台上返回行。它似乎像一个 select 语句一样工作。
        猜你喜欢
        • 2021-12-26
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-26
        • 2016-12-12
        相关资源
        最近更新 更多