Sql server 如何使用内部联接和左外部联接联接两个表
我在MSSQL中有两个具有相同结构T1和T2的表。两个表都可以在Id上进行内部联接,但T2可能不包含与T1中的Id关联的AccountId。 下面是我尝试过的代码,但结果不起作用?。Sql server 如何使用内部联接和左外部联接联接两个表,sql-server,Sql Server,我在MSSQL中有两个具有相同结构T1和T2的表。两个表都可以在Id上进行内部联接,但T2可能不包含与T1中的Id关联的AccountId。 下面是我尝试过的代码,但结果不起作用?。 预期的结果是将不在T1中的值插入T3中您需要的where子句: INSERT INTO T3(Id, AccountId, Name) SELECT T1.Id, T1.AccountId, T1.Name FROM T1 LEFT JOIN T2 ON T2
预期的结果是将不在T1中的值插入T3中您需要的
where
子句:
INSERT INTO T3(Id, AccountId, Name)
SELECT T1.Id, T1.AccountId, T1.Name
FROM T1 LEFT JOIN
T2
ON T2.Id = T1.id
WHERE T2.AccountId IS NOT NULL;
注:
- 只需要一个
。我不知道左连接
内部连接的作用是什么
- 每个
后面都应该跟一个JOIN
子句ON
- 在执行
插入操作时,应列出列
- 您需要
来查找不匹配项WHERE
- 也可以使用
编写此查询不存在
where
条款:
INSERT INTO T3(Id, AccountId, Name)
SELECT T1.Id, T1.AccountId, T1.Name
FROM T1 LEFT JOIN
T2
ON T2.Id = T1.id
WHERE T2.AccountId IS NOT NULL;
注:
- 只需要一个
。我不知道左连接
内部连接的作用是什么
- 每个
后面都应该跟一个JOIN
子句ON
- 在执行
插入操作时,应列出列
- 您需要
来查找不匹配项WHERE
- 也可以使用
编写此查询不存在
CREATE TABLE #T1 (id int, AccountId int, [Name] varchar(6));
CREATE TABLE #T2 (id int, AccountId int, [Name] varchar(6));
CREATE TABLE #T3 (id int, AccountId int, [Name] varchar(6));
INSERT INTO #T1
VALUES (111,5555,'John '),
(122,5555,'David '),
(133,5555,'Sharon');
INSERT INTO #T2
VALUES (111,5555,'John '),
(133,5555,'Sharon');
INSERT INTO #T3 (id, AccountId, [Name])
SELECT T1.id,
T1.AccountId,
T1.[Name]
FROM #T1 T1
LEFT JOIN #T2 T2 ON T1.ID = T2.id
WHERE T2.id IS NULL;
SELECT *
FROM #t3;
DROP TABLE #T1;
DROP TABLE #T2;
DROP TABLE #T3;
这应该是你想要的:
CREATE TABLE #T1 (id int, AccountId int, [Name] varchar(6));
CREATE TABLE #T2 (id int, AccountId int, [Name] varchar(6));
CREATE TABLE #T3 (id int, AccountId int, [Name] varchar(6));
INSERT INTO #T1
VALUES (111,5555,'John '),
(122,5555,'David '),
(133,5555,'Sharon');
INSERT INTO #T2
VALUES (111,5555,'John '),
(133,5555,'Sharon');
INSERT INTO #T3 (id, AccountId, [Name])
SELECT T1.id,
T1.AccountId,
T1.[Name]
FROM #T1 T1
LEFT JOIN #T2 T2 ON T1.ID = T2.id
WHERE T2.id IS NULL;
SELECT *
FROM #t3;
DROP TABLE #T1;
DROP TABLE #T2;
DROP TABLE #T3;
听起来你希望T2包含T2中当前的内容和T1中的内容的并集?如果是这样,您可以考虑使用EXCEPT计算集合差异并插入这些行。您可以为预期的结果设置一个屏幕截图吗?听起来您希望T2包含当前在T2中的内容和T1中的内容的并集?如果是这样,您可以考虑使用EXCEPT计算集合差异并插入这些行。您可以为预期结果设置屏幕截图吗?