sql - 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
解决方案
你好像没有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;
推荐阅读
- android - 单击时在按钮中实现 if else
- reactjs - 如何使用反应停止 VSCODE 中的标签分离?
- asp.net - 如何在 .NET 中验证对 Discord 交互 webhook 发出的请求?
- elixir - 如何修复依赖项中的透析器 unknown_function 错误?
- intro.js - 您可以在 Introjs 步骤中添加动态内容吗
- python - 如何将函数参数放在双引号中
- javascript - 如何在 javascript 中生成日文文本的 slug?
- gradle - 使用 Packer Provisioner 安装 Gradle
- postman - Postman 示例基于请求数据的动态响应
- python - 基于过滤器的数据帧的Seaborn折线图