2016-10-02 30 views
1

我想執行以下SQL相當於在Q-SQL:如何在KDB +/Q中執行SQL相關子查詢的等價操作?

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

注意,困難在於其中內部查詢子句涉及從外部查詢的變量。

我想出的最接近的想法是重命名內部查詢中的類列(這是第一列)並嘗試訪問它們。

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) 

回答

1

該語法是不可能的Q-SQL UPDATE。

嘗試以下操作:

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

編輯:(聚合其他更新語法時),在這個例子中(其中所有的ClassID出現在學生表)

,技術上可以達到同樣的結果只使用學習者表。

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