从两个表递归创建 SQLite 视图

问题描述 投票:0回答:1

我在表 A 上有一列包含数字,在表 B 上有一列包含不同的数字。 如何创建表 A 数字的视图,其中第二列是与 B 最接近的数字。

---Table ColA---|---Table ColB---

13     | 22

25     | 49

22     | 11

33     | 36

我希望查看结果是

---View ColA---|---View ColB---

13     | 11

25     | 22

22     | 22

33     | 36

sqlite recursion
1个回答
0
投票

根据您要查看的数据量以及这只是一次性查询还是多次调用它,一种快速而肮脏的解决方案可能是简单地交叉连接表,...

...并使用函数

ROW_NUMBER
链接到文档)选择正确的条目
ABS
链接到文档)函数计算 to 列之间的绝对差并简单地将其包装全部都在子查询中,以保持干净。

可能看起来像这样:

SELECT t1num, t2num FROM (
    SELECT 
        ROW_NUMBER() OVER(Partition BY t1.num ORDER BY t1.num, ABS(t1.num - t2.num) ) rowNum,
        t1.num t1num, 
        t2.num t2num 
    FROM Table1 t1 CROSS JOIN Table2 t2) SubQuery
 WHERE rowNum = 1
© www.soinside.com 2019 - 2024. All rights reserved.