首页 > 解决方案 > SQL-如何从两个不同的表中选择数据?

问题描述

我正在努力从 2 个不同的表中选择数据,但我不知道。如果我使用 INNER JOIN 它显示注意。欢迎任何帮助,谢谢。

我的第一张桌子:

CREATE TABLE P_N( 
PN_ID int NOT NULL,
PN VARCHAR (1000),
primary key (PN_ID)
);

我的第二张表:

CREATE TABLE NAME (
NAME_ID VARCHAR(60) PRIMARY key,
NAME  VARCHAR (40)
);

我的选择代码:

SELECT DISTINCT NAME.NAME_ID,  PN.PN_ID
FROM NAME
FULL JOIN P_N 
ON PN.PN =NAME.NAME_ID;

如果我使用 left 或 full Join 这是结果:

NAME_ID      PN_ID
nm0006300    NULL
nm0006400    NULL
nm0006500    NULL
nm0006600    NULL
nm0006700    NULL

如果我使用正确的加入:

NAME_ID      PN_ID
null        921691
null        921692
null        921693
null        921694

这就是我希望结果的样子 例如:

NAME_ID        PN_ID
nm0006300      921691
nm0006400      921692
nm0006500      921693
nm0006600      921694

标签: sql

解决方案


你好像没有JOIN钥匙。您可以添加一个ROW_NUMBER()

SELECT n.NAME_ID, PN.PN_ID
FROM (SELECT n.*, ROW_NUMBER() OVER (ORDER BY NAME_ID) as seqnum
      FROM NAME n
     ) n JOIN
     (SELECT pn.*, ROW_NUMBER() OVER (ORDER BY PN) as seqnum
      FROM P_N pn
     ) pn
     ON PN.seqnum = n.seqnum;

推荐阅读