首页 > 解决方案 > 仅在并行行之间合并,在 SQL 中

问题描述

给定两个具有不同行和值的表,我如何组合这两个表,以便第一个表的第一行将与第二个表的第一行组合成一个新行,依此类推.. 要求与笛卡尔不同产品,只有并行行将在新表上组合在一起。我正在使用 PL/SQL Developer

例如(这些值也只是一个示例):

 Table 1:
LongId
  100
  200
  300

Table 2: 
   Id
    1
    2
    3

 The new table:
     Id LongId
     1    100
     2    200
     3    300

标签: sqloracle

解决方案


利用:

SELECT id, longid 
FROM (
  SELECT t.*, 
         row_number() over( order by LONGID ) as XXX
  FROM table1 t
) 
JOIN (
  SELECT t.*, 
        row_number() over( order by id) as XXX
  FROM table2 t
)
USING ( xxx )

演示:http ://sqlfiddle.com/#!4/ba9b1/5

| ID | LONGID |
|----|--------|
|  1 |    100 |
|  2 |    200 |
|  3 |    300 |

推荐阅读