sql - 尝试插入表 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 C
Table D
几乎所有的东西,真的很挣扎
解决方案
首先,您插入表 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 . . .
推荐阅读
- shopify-app - 如何在 Shopify graphql 中通过电子邮件找到客户
- git - 指定要使用的 SSH
- c++ - 模板类的密钥模式,朋友和模板模板参数的问题
- angular - 带有组件的 Angular 向导作为每个步骤的内容
- signalr - 使用带有 ConnectionId 的直接 API 调用进行组管理而不是依赖上游代理消息是否安全?
- xps - 如何让 xps.packaging 将自定义 URL 识别为有效?
- sharepoint-online - Office365-REST-Python-Client 似乎无法更新 Sharepoint 中的查找列
- apache-kafka - 融合模式注册表与 Spring 云模式注册表
- r - 如何在使用 ggplot2 制作的单个图中组合填充(列)和颜色(点和线)图例?
- vue.js - 如何测试 cypress 测试期间发送的请求中的数据?