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

标签 sql-server apache-drill

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

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/

相关文章:

mysql - 将巨大的 MySQL 转储文件恢复到 MS SQL Server 2008

sql-server - xml路径错误的 Sequelize/繁琐的MS SQL

hadoop - Apache Drill 的性能

sql-server - ALTER DATABASE 失败,因为无法在数据库 '<db_name>' 上放置锁。稍后再试

sql-server - 如何在mssql中编写IF(expr1,expr2,expr3)

php - 在 PHP 中使用 if 语句和 $GET 的正确方法

amazon-web-services - 使用 DefaultAWSCredentialsProviderChain 将 Apache Drill 连接到 Amazon S3

apache-drill - 如何在 apache drill 中以编程方式添加更多存储插件?

hadoop - 权限错误| Apach钻查询| HDFS

namespaces - 我可以使用 Apache Drill 查询命名空间中的 hbase 表吗?