Sql 什么';相交和连接有什么不同?

Sql 什么';相交和连接有什么不同?,sql,sql-server,Sql,Sql Server,请帮帮我 创建数据: CREATE TABLE sub1(id int,name nvarchar(7)); CREATE TABLE sub2(id int,name nvarchar(7)); INSERT INTO sub1 VALUES(1,'one1'); INSERT INTO sub2 VALUES(1,'one1'); INSERT INTO sub1 VALUES(2,'one2'); INSERT INTO sub2 VALUES(2,'one2'); INSERT INTO

请帮帮我

创建数据:

CREATE TABLE sub1(id int,name nvarchar(7));
CREATE TABLE sub2(id int,name nvarchar(7));
INSERT INTO sub1 VALUES(1,'one1');
INSERT INTO sub2 VALUES(1,'one1');
INSERT INTO sub1 VALUES(2,'one2');
INSERT INTO sub2 VALUES(2,'one2');
INSERT INTO sub1 VALUES(3,'one3');
INSERT INTO sub2 VALUES(4,'one4');
INSERT INTO sub1 VALUES(5,'one5');
INSERT INTO sub2 VALUES(6,'one6'); 
INSERT INTO sub1 VALUES(NULL,NULL);
INSERT INTO sub2 VALUES(NULL,NULL);
这两个查询之间有什么不同:

SELECT * FROM sub1 INTERSECT SELECT * FROM sub2;

SELECT sub1.id,sub1.name FROM sub1 JOIN sub2 ON sub1.id = sub2.id;
“相交”和“连接”有什么不同

  • INTERSECT仅比较两个集合,并仅从两个集合中拾取不同的等效值。需要注意的是,在INTERSECT set运算符中,空标记被视为相等。集合还应包含相同数量的隐式可转换类型的列
  • 我猜你指的是内部连接? 内部联接将返回匹配谓词将返回TRUE的行。也就是说,如果两个表中都有NULL标记,那么这些行将不会返回,因为SQL中的NULL为NULL 此外,INTERSECT只是比较所有属性上的集合。它们的类型应该彼此隐式转换。在join中,您可以对任何谓词和不同类型的集合进行比较。仅返回有匹配项的行不是强制性的。例如,您可以在join中生成笛卡尔积

    Select * from Table1
    Join Table2 on 1 = 1
    

    你试过运行这些查询吗?是的。Dif仅空值。Pranav-BiTwiser完美链接!创造答案,我接受。