[英]inserting data in table in sql from another table records
我有两张桌子...
UserMaster
( UserID, Fname
)
SharingMaster
( SharingID, UserID
)
我希望所有数据都插入到SharingMaster
, UserID
在UserMaster
中可用......意味着来自usermaster
每个userid
每一行......
例如..如果我在两个表中都有数据
用户主:
UserID Fname
-----------------------
1 Abc
4 Def
5 asda
8 fgdfgdf
和SharingMaster
如下
SharingID UserID
-------------------------
6 1
9 4
8 5
8 8
那么什么是查询呢?
如果您尝试将UserID
s 从UserMaster
插入到SharingMaster
,但尚未存在,这里有一种在 SQL Server 中执行此操作的方法。 我唯一的假设是, SharingID
是一个会自动填充的 IDENTITY 列。
INSERT INTO dbo.SharingMaster
(UserID
, Fname
)
SELECT UserID
, Fname
FROM UserMaster
WHERE NOT EXISTS ( SELECT 1
FROM SharingMaster
WHERE SharingMaster.UserID = UserMaster.UserID )
再说一次,由于场景有点模棱两可,这里有一些其他选择。 我的假设是您提到的“所有数据”是来自 UserMaster 的Fname
列。
如果您想为共享母版中已有的 ID 插入或覆盖现有数据:
INSERT INTO SharingMaster
(Fname
)
SELECT Fname
FROM UserMaster
JOIN SharingMaster
ON UserMaster.UserID = SharingMaster.SharingID
另外,如果您使用的是 SQL Server 2008 R2 或更高版本,则可以使用 MERGE 语句:
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
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.