sql—如何在sqlite中将这两个表连接到一个表中

yrefmtwq  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(323)

我有两个sqlite表,我想加入。这些表看起来像:
表1:

address  size
2000     size56
2001     size56
2002     size09

表2:

address  size
3000     size56
3001     size56
3002     size56
3003     size09

我想在sql中按column.size将这两个表连接到一个表中。我希望得到以下结果:
输出:

address  size    address  size
2000     size56  3000     size56
2001     size56  3001     size56
2002     size09  3003     size09
ou6hu8tu

ou6hu8tu1#

表的直接联接不能解决问题,因为您只想将表1的每一行联接到表2的一行。
使用 ROW_NUMBER() 窗口功能:

select
  t1.address address1, t1.size size1,
  t2.address address2, t2.size size2
from (
  select *, row_number() over(partition by size order by address) rn
  from Table1
) t1 inner join  (
  select *, row_number() over(partition by size order by address) rn
  from Table2
) t2 on t2.size = t1.size and t2.rn = t1.rn 
order by address1

请看演示。
结果:

| address1 | size1  | address2 | size2  |
| -------- | ------ | -------- | ------ |
| 2000     | size56 | 3000     | size56 |
| 2001     | size56 | 3001     | size56 |
| 2002     | size09 | 3003     | size09 |

相关问题