【发布时间】:2023-03-30 19:31:01
【问题描述】:
假设我创建了以下维度表:
create table schema1.DOMAIN (
ID INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
DOMAIN_NAME VARCHAR(10)
);
我有一个日志表,其中 DOMAIN_NAME 是一列。我的目标是编写一个插入语句,该语句将使用 DOMAIN_NAME 的值填充此维度表,但前提是它们尚不存在。例如:
INSERT INTO schema1.DOMAIN (ID, DOMAIN_NAME)
select distinct DOMAIN_NAME from LOGS l where not exists (select 1 from schema1.DOMAIN d where d.domain_name = l.domain_name);
我实际上还没有在 MySQL 数据库上运行它,但我有以下问题:
请注意,我没有为插入的 schema1.DOMAIN 中的 ID 列提供值。这有关系吗?如果没有提供,它会简单地自动增加主键吗?还是会抛出错误?有没有办法避免提供这个 ID 并让它自动递增?这是我想要的行为。最好的方法是什么?
有没有更高效的方法来做到这一点?
无论 schema1.DOMAIN 为空还是已有记录,我都希望它能够正常工作,并且我们正在转储解析日志以获取新值。这两个目标不兼容吗?
【问题讨论】:
标签: mysql sql select sql-insert ddl