【发布时间】:2011-11-15 03:27:52
【问题描述】:
我正在使用 VS2005 和 SQL Server 2005。
我正在尝试执行连接 3 个 sql 表的多个 INSERT INTO SQL 语句。
这三个表是:
-
Table1:UserID, Username -
Table2:UserID, Status -
Table3:UserID, Username, Issue
以下是我需要执行的检查:
存在于
Table1中的用户应该存在于Table2中存在于
Table1中的用户不应在Table2中拥有STATUS=DELETETable2中没有STATUS=DELETE的用户应该存在于Table1中
目前我只有一个SELECT 语句满足上述3个查询,没有添加到第三个表:
SELECT *
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
OR (t2.status = 'DELETE' AND t1.userid IS NOT NULL)
OR (t2.userid IS NOT NULL AND t2.status <> 'DELETE' AND t1.userid IS NULL)
我想,对于上述每项检查,INSERT 将结果放入具有唯一 ISSUE 变量的 Table3 中(例如,对于 1 号检查,ISSUE=User exist in t1 but not t2)
目前我正在尝试形成一个将 3 个表连接在一起的查询,对于第一次检查找到的每个结果,t2.userid IS NULL AND t1.userid IS NOT NULL,它将在Table3 中插入一个新行。但是我的 SQL 查询有一些问题。
INSERT INTO Table3 (userid, username, issue)
VALUES (t1.userid, t1.username, 'user not found in t2')
FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid
WHERE (t2.userid IS NULL AND t1.userid IS NOT NULL)
非常感谢您的帮助。
【问题讨论】:
标签: sql sql-server database tsql