列中save-DATEDIFF的MySql问题

列中save-DATEDIFF的MySql问题,mysql,mysql-workbench,mysql-error-1064,Mysql,Mysql Workbench,Mysql Error 1064,我正在写一个酒店数据库,我有一个关于DATEDIFF func的问题。我有一张表,上面有客人ID、到达日期、出发日期,我希望DATEDIFF(出发、到达)写在同一张表的另一列中。我该怎么做?我尝试创建两个表,但它只运行了一次,当我添加另一个来宾时,每次都会出现主键复制错误 当我创建空列“length”并尝试在此列中保存select时,会显示错误。 代码: 在预订(停留时间)中插入从预订中选择DATEDIFF(出发、到达); 错误: 表: 这是一张有客人的桌子: CREATE TABLE IF

我正在写一个酒店数据库,我有一个关于DATEDIFF func的问题。我有一张表,上面有客人ID、到达日期、出发日期,我希望DATEDIFF(出发、到达)写在同一张表的另一列中。我该怎么做?我尝试创建两个表,但它只运行了一次,当我添加另一个来宾时,每次都会出现主键复制错误

当我创建空列“length”并尝试在此列中保存select时,会显示错误。 代码: 在预订(停留时间)中插入从预订中选择DATEDIFF(出发、到达); 错误:

表:

这是一张有客人的桌子:

 CREATE TABLE IF NOT EXISTS `input_qt_plus`.`guests` (
      `id_guests` INT NOT NULL AUTO_INCREMENT,
      `first_name` VARCHAR(45) NOT NULL,
      `last_name` VARCHAR(45) NOT NULL,
      `email` VARCHAR(45) NOT NULL,
      `phone` VARCHAR(45) NOT NULL,
      `id_num` VARCHAR(45) NULL,
      PRIMARY KEY (`id_guests`))
    ENGINE = InnoDB;
这是一张有预订的桌子:

CREATE TABLE IF NOT EXISTS `input_qt_plus`.`reservations` (
  `id_res` INT NOT NULL AUTO_INCREMENT,
  `guests_id_guests` INT NOT NULL,
  `arrival` DATE NOT NULL,
  `departure` DATE NOT NULL,
  PRIMARY KEY (`id_res`),
  INDEX `fk_reservations_guests_idx` (`guests_id_guests` ASC),
  CONSTRAINT `fk_reservations_guests`
    FOREIGN KEY (`guests_id_guests`)
    REFERENCES `input_qt_plus`.`guests` (`id_guests`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

尝试这个查询:希望它能工作

INSERT INTO your_table (field1, field2, arrival, departure, length)
    VALUES (value1, value2, arrivalDate, departureDate, DATEDIFF(day,arrivalDate, departureDate))

因为您正在更新同一个表,所以应该引用它两次。 首先将该列添加到表中(假设您将其称为stay_for),然后像这样更新它-

update reservations R
inner join reservations R2
on R2.id_res = R.id_res
set R.stay_for =  DATEDIFF(R2.departure, R2.arrival);

请添加表定义以及导致重复键错误的步骤。
update reservations R
inner join reservations R2
on R2.id_res = R.id_res
set R.stay_for =  DATEDIFF(R2.departure, R2.arrival);