繁体   English   中英

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

[英]inserting data in table in sql from another table records

我有两张桌子...

  • UserMaster ( UserID, Fname )

  • SharingMasterSharingID, UserID

我希望所有数据都插入到SharingMasterUserIDUserMaster中可用......意味着来自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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM