我有2张桌子......
UserMaster
(UserID, Fname
)
SharingMaster
(SharingID, UserID
)
我希望SharingMaster
中UserID
UserMaster
中插入userid
的所有数据... {...}}表示来自usermaster
的{{1}}每行...
例如..如果我在两个表中都有数据
UserMaster :
UserID Fname
-----------------------
1 Abc
4 Def
5 asda
8 fgdfgdf
和SharingMaster
如下
SharingID UserID
-------------------------
6 1
9 4
8 5
8 8
那么查询是什么?
答案 0 :(得分:0)
如果您尝试将UserID
插入SharingMaster
UserMaster
中尚未出现的SharingID
,可以在SQL Server中执行此操作。我唯一的假设是INSERT INTO dbo.SharingMaster
(UserID
, Fname
)
SELECT UserID
, Fname
FROM UserMaster
WHERE NOT EXISTS ( SELECT 1
FROM SharingMaster
WHERE SharingMaster.UserID = UserMaster.UserID )
是一个将自动填充的IDENTITY列。
Fname
然后,由于场景有点含糊不清,以下是其他一些选项。我的假设是"所有数据"您提到的是UserMaster的INSERT INTO SharingMaster
(Fname
)
SELECT Fname
FROM UserMaster
JOIN SharingMaster
ON UserMaster.UserID = SharingMaster.SharingID
列。
如果您想插入或覆盖已在共享主计划中的ID的现有数据:
MERGE dbo.SharingMaster AS TARGET
USING
(SELECT UserID
, Fname
FROM dbo.UserMaster
) AS SOURCE (UserID, Fname)
ON (TARGET.UserID = SOURCE.UserID)
WHEN MATCHED
THEN
UPDATE SET
Fname = SOURCE.Fname
WHEN NOT MATCHED
THEN
INSERT (UserID, Fname)
VALUES
(SOURCE.UserID
, SOURCE.Fname
);
作为奖励,如果您使用的是SQL Server 2008 R2或更高版本,则可以使用MERGE语句:
{{1}}