sql - 仅在并行行之间合并,在 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
解决方案
利用:
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 |
推荐阅读
- git - 在现有的 aws 桩线中用 Git 替换 CodeCommit
- python - 如何拆分数据以在 python 中获得所需的输出?
- node.js - NestJs 合并 2 个 DTO 或最佳实践
- java - Java并发同步不起作用
- angular - Angular 延迟加载模块重新加载应用程序
- javascript - 无法打印树枝阵列
- mysql - 子查询中的多列:SQLite、MS SQL Server
- c++ - 依赖注入一个延续库 C++
- angular - how to write unit test to cover all the condition of breakpoint observer?
- apache-spark - 是否可以在合并操作中从数据帧中读取