gpt4 book ai didi

join - 如何在 kdb 中执行有效的左连接?

转载 作者:行者123 更新时间:2023-12-01 03:28:42 25 4
gpt4 key购买 nike

我想在 KDB+/Q 中运行一个传统的 SQL 风格的左连接。

  • 对于左侧的每一行,我们在结果中至少得到一行
    table 。
  • 如果右表中有多个匹配项,我会得到一行
    每一个,不仅仅是第一场比赛

  • 测试数据
      x:([];a:1 1 2 3; b:3 4 5 6)

    y:([]; a:1 2 2 4; c:7 8 9 10)

    我能想到的最好的版本是这样的:

    这将仅提供第一个匹配项的左连接附加到提供所有匹配项的内部连接,然后删除重复项:
      distinct ej[`a; x; y] , x lj `a xkey y

    谁能给我提供一个在某些方面更快和/或更好的
    另一种方式?例如,我真的很想避免使用 distinct 。

    最佳答案

    基于@Ryan 的回答。

    k)nungroup:{$[#x:0!x;(,/){$[#t:+:x;t;enlist *:'[x];t]}'[x]]}  
    q)nungroup:{$[count x:0!x;(,/){$[count t:flip x;t;enlist first'[x]]}'[x];x]}

    q)nungroup x lj ` \`a xgroup y

    a b c
    -----
    1 3 7
    1 4 7
    2 5 8
    2 5 9
    3 6

    关于join - 如何在 kdb 中执行有效的左连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39626795/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com