sql - 在sql中加入2个相互不依赖的表
问题描述
我通过以下方式有2张桌子
表格1:
e_id e_name e_salary e_age e_gender e_dept
---------------------------------------------------
1 sam 95000 45 male operations
2 bob 80000 21 male support
3 ann 125000 25 female analyst
表 2:
d_salary d_age d_gender e_dept
----------------------------------
34000 25 male Admin
56000 41 female Tech
77000 35 female HR
我想要这样的输出:
e_id e_name e_salary e_age e_gender e_dept d_salary d_age d_gender e_dept
1 sam 95000 45 male operations 34000 25 male Admin
2 bob 80000 21 male support 56000 41 female Tech
3 ann 125000 25 female analysts 77000 35 female HR
表之间没有依赖关系。没有共同的列。没有主键或外键。我尝试使用导致重复行的交叉连接,因为它适用于 MXN
我是这个 SQL 的新手。有人能帮助我吗?提前致谢
解决方案
row_number()
通常,您可以在两个表上使用窗口函数创建行计数并将其用作连接标准。但这需要两个表的特定顺序,这意味着您已经明确告诉查询为什么Admin
记录排在第一位,并且必须在表 1 的第一条记录上连接:
SELECT
*
FROM (
SELECT
*,
row_number() OVER (ORDER BY e_id) as row_count -- assuming e_id is your order criterion
FROM table1
) t1
JOIN (
SELECT
*,
row_number() OVER (ORDER BY /*whatever you expect to be ordered*/) as row_count
FROM table2
) t2
ON t1.row_count = t2.row_count
推荐阅读
- java - 为什么不收集我的内容解析器的所有歌曲/文件?
- c - 如何读取多行的字符串并打印偶数位字符和奇数位字符,每个stri中用空格分隔
- asp.net-mvc - 如何将 IStringLocalizer 注入 IApplicationModelConvention?
- mongodb - MongoDb 文本搜索返回空结果
- c# - DelegatingHandler 在返回 Task 时挂起
- python - 对每一行中的单词进行排序
- neo4j - 无法通过浏览器连接到 neo4j,neo4j 浏览器中的螺栓端口已更改
- android - 来自 Qt Android C++ Firebase 的哄骗日志信息(通知不起作用)
- amazon-web-services - 从 AWS CloudFront 中删除 Cache-Control 标头?
- c++ - 打印此矩阵的 if 语句是什么