从另一张表插入一行到表中

时间:2018-06-26 11:10:08

标签: sqlite select insert

我有'SchoolYearTeachingDays'表,其中只有一列,其中是日期:

CREATE TABLE SchoolYearTeachingDays (
    aDate DATE PRIMARY KEY
                UNIQUE
);

我用很多唯一的日期填充了它。这些日期不包括星期日和星期六的日期。 我还有另一个“ TeachingSaturdaysInSchoolYear”表:

CREATE TABLE TeachingSaturdaysInSchoolYear (
    id            INT  PRIMARY KEY
                       UNIQUE,
    aDate      DATE,
    TimetableForTheDay TEXT
);

此表仅包含两个日期。这两个日期是两个星期六。在这两个星期六,我们必须教学生。 当我对此表执行以下查询时,我得到了两条记录:

2018-04-14

2018-05-05

我想将这两个日期从“ TeachingSaturdaysInSchoolYear”表插入“ SchoolYearTeachingDays”表。

我正在尝试以下查询:

INSERT INTO SchoolYearTeachingDays
 SELECT aDate FROM TeachingSaturdaysInSchoolYear
;

但是我得到这个错误: 错误:唯一约束失败:SchoolYearTeachingDays.aDate

我的这个查询如何工作,为什么会出现此错误?我如何实现我的目标?

最好,朋友

1 个答案:

答案 0 :(得分:1)

  1. 您通过向表SchoolYearTeachingDays中插入重复值来违反唯一约束。

  2. 要解决该错误,请置于非条件状态,这样不会将已插入的日期再次插入SchoolYearTeachingDays表中。

示例

INSERT INTO SchoolYearTeachingDays
 SELECT aDate FROM TeachingSaturdaysInSchoolYear T WHERE T.aDate NOT IN (SELECT S.aDate FROM SchoolYearTeachingDays S)