【问题标题】:How do I do the equivalent of a SQL Correlated Subquery in KDB+ / Q?如何在 KDB+/Q 中执行相当于 SQL 相关子查询的操作?
【发布时间】:2016-10-02 19:41:02
【问题描述】:

我想在 q-sql 中做以下 sql 的等效操作:

update classes c set users=(select count(*) from learners u where u.classId=c.classId)

请注意,困难在于内部查询中的 where 子句涉及来自外部查询的变量。

我能想到的最接近的想法是重命名内部查询中的类列(即第一列)并尝试同时访问它们。

update users:(select count i from ( `LclassId xcol learners) where LclassId=classId) from classes

但这会导致错误'classId 这似乎意味着来自外部查询的classId 在内部不可用。

这是一些示例数据:

learners:([]classId:(1;2;3;4); userId: (1; 2; 3; 4))

classes:([]classId:1, 2, 3, 4)

【问题讨论】:

    标签: kdb correlated-subquery


    【解决方案1】:

    q-sql 更新无法使用此语法。

    尝试以下方法:

    classes:classes lj select users:count i by classId from learners

    编辑:(聚合时的附加更新语法)

    对于此示例(所有 classId 都出现在学习者表中),从技术上讲,您可以仅使用学习者表来获得相同的结果。

    classes:delete userId from update users:count i by classId from learners

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2015-01-19
      • 2013-01-07
      • 1970-01-01
      相关资源
      最近更新 更多