gpt4 book ai didi

sql-server - 具有相同插件和相同数据类型的 SQL Server 表的连接问题

转载 作者:行者123 更新时间:2023-12-03 17:40:54 25 4
gpt4 key购买 nike

我想使用相同的存储插件加入两个表。但是显示空值的列之一。
我正在使用此查询:-

select * from SqlServer.test_mopslive.reports as Reports join     
SqlServer.test_mopslive.reportsetting as ReportSetting on Reports.ID = ReportSetting.ID

这里 SqlServer是存储插件名称, test_mopslive是数据库名称, reports , reportsetting是表名。

执行此查询时 T_ID 显示 Null。

但是,如果我使用具有相同凭据的两个不同存储插件名称,则它可以正常工作。

表格1:-
create table Reports (ID bigint, Name varchar(25)); 

insert into Reports values (29, 'SqlThree');
insert into Reports values (30, 'SqlTwo');
insert into Reports values (31, 'SqlThree');
TABLE 2:-
CREATE TABLE ReportSetting 
(
P_id bigint not null auto_increment primary key,
Name varchar(25),
ID bigint,
CONSTRAINT fk_ID FOREIGN KEY (ID)
REFERENCES Reports(ID));

insert into ReportSetting values (1,'My_Sreekant1', 29);
insert into ReportSetting values (2,'My_Sreekant2', 30);
insert into ReportSetting values (3,'My_Sreekant3', 31);

是否可以使用相同的存储插件名称连接两个表?如果是,那么我在这个查询中做错了什么?

最佳答案

您一直在更改问题和代码的文本 - 您之前和现在使用的是 RIGHT OUTER JOIN,您使用的是与 INNER JOIN 相同的普通 JOIN。

由于您使用的是 INNER JOIN,因此您不会从任一表中获取不满足您的连接条件的任何行:

join SqlServer.test_mopslive.reportsetting ReportSetting
on Reports.ID = ReportSetting.ID

如果您运行此查询(针对 SQL Server - 我不知道 Drill 是如何工作的),您将不会有任何 Reports.ID 或 ReportSetting.ID 不相等的行,也不会有任何行为空.这意味着,如果报告在 ReportSetting 表中没有任何条目,则该报告不会显示在您的结果集中,并且如果报告设置在报告表中没有匹配项,则它不会显示在您的结果集中.

如果您使用的是 RIGHT OUTER JOIN,您将获得 JOIN 中的所有行。目标 表 (ReportSetting),数据来自 JOIN 来源 (报告)在可用的情况下,否则在这些字段中为空。

如果您使用的是 LEFT OUTER JOIN,您将获得 JOIN 中的所有行。来源表(报告),数据来自 JOIN 目标 (报告设置)在可用的情况下,否则在这些字段中为 null。

如果您使用的是 FULL OUTER JOIN,您将获得 全部 来自 的行两者 表。在不匹配的字段中为空值。

关于sql-server - 具有相同插件和相同数据类型的 SQL Server 表的连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com