首页 > 解决方案 > 尝试插入表 A 并链接表 B 和 C,但如果不存在则添加到所有表

问题描述

我有 4 张桌子:

Table A: 
  LogID (unique identifier), 
  UserID (bigint), 
  LogDate (date/time), 
  LogEventID (int), 
  IPID (varchar(36)), 
  UserAgentID (varchar(36))

Table B: 
  IPID (unique identifier), 
  IPAddress (varchar(255))

Table C: 
  UserAgentID (unique identifier), 
  UserAgent (varchar(255))

Table D: 
  LogEventID (int), 
  LogEvent (varchar(255))

我正在尝试写入 toTable A但需要检查并包含数据,以便我可以链接它们Table B。如果它们不包含任何数据,我需要创建一些。有些表可能包含数据,有时它们都不包含。Table CTable D

几乎所有的东西,真的很挣扎

标签: sqlsql-server

解决方案


首先,您插入表 B、C、DWHERE NOT EXISTS

例子

INSERT INTO TableB (IPID, IPAddress) 
SELECT @IPPD, @IPAddress
WHERE  NOT EXISTS
       (
           SELECT *
           FROM   TableB x
           WHERE  x.IPID = @IPID
       )

然后你插入表A

 INSERT INTO TableA ( . . . )
 SELECT . . .

推荐阅读