从另一个表记录中插入sql表中的数据

时间:2014-04-11 18:40:41

标签: sql

我有2张桌子......

  • UserMasterUserID, Fname

  • SharingMasterSharingID, UserID

我希望SharingMasterUserID 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

那么查询是什么?

1 个答案:

答案 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}}