首页 > 解决方案 > 在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 的新手。有人能帮助我吗?提前致谢

标签: sqlpostgresqljoin

解决方案


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

推荐阅读