首页 > 解决方案 > 不确定如何使用两个表编写 INSERT INTO 并合并 IF NOT EXISTS

问题描述

我正在使用 SQLITE,我有两个表 Teams 和 Fixtures。

我想使用 Teams 表中的 ID 作为 Team_Name 添加新的灯具,但如果 Team_Name 在 Teams 中不存在,我想在执行 INSERT INTO Fixture 之前将其添加到 Teams。

到目前为止我有这个...

INSERT INTO Fixture 
VALUES (
Select ID from Teams where Team_Name = ‘Home Team’
);

我认为这将在名称存在的地方起作用。(我无法在远离计算机的情况下进行测试,并尝试在注释中编写代码以供以后测试)。

我曾尝试在多个站点上查找,并且我有一本面向初学者的基本 SQL 书,但我不确定如何编写额外的位,因为我能找到的只是使用一个表插入如果不存在则插入。

我希望我已经适当地写了这个问题,但是由于我是 SQL 和这些论坛的新手,我将不胜感激地收到任何关于更好地提出问题的建议和指导。

标签: sqliteparent-childsql-insert

解决方案


使用INSERT OR IGNOREfirst 尝试将两个团队名称Teams插入其中,然后将新行插入Fixtures.
如果表中已经存在团队的名称,则不会发生任何事情。
如果 有一个UNIQUE约束Team_Name,这将起作用,这是有道理的:

INSERT OR IGNORE INTO Teams(Team_Name) VALUES 
  ('A Name For Home Team'),
  ('A Name For Away Team');

INSERT INTO Fixtures (HomeTeamId, AwayTeamId) VALUES
(
  (SELECT ID FROM Teams WHERE Team_Name = 'A Name For Home Team'),
  (SELECT ID FROM Teams WHERE Team_Name = 'A Name For Away Team')
);

推荐阅读