sqlite3更新与另一个表的内部联接

时间:2014-01-31 12:30:23

标签: sqlite

我有2个假期和套餐。

holidayId具有(holidayId,holidayName)

的属性
holidayId INTEGER Primary Key NOT NULL
holidayName varchar(45) NOT NULL 

packageId INTEGER Primary Key NOT NULL
holidayId INT NOT NULL
endDate varchar(45) NOT NULL
FOREIGN KEY(holidayId) References Holiday(holidayId)

我想在sqlite3的假日表中更新package table匹配的endDate值和holidayName的值

含义

如果这是初始值

  Holiday table
  holidayName = "Package A";

  Package table
  endDate = "31-01-2014"

我现在想要更新" 31-01-2014"的结束日期值到" 30-01-2014",

  • 它将与假期表中的holidayId匹配,并使用内部联接
  • 与包表中的fk.holidayId匹配
  • 从假日表中获取holidayName并找到holidayName ="包A"。
  • 如果holidayName ="套餐A"发现它将更新endDate值。

我试过这个

sqlite3 update fail attempt

很抱歉,如果我的解释不清楚,因为我真的不知道如何表达我的问题并尽力说出来。

1 个答案:

答案 0 :(得分:2)

你可以尝试:

UPDATE package 
SET endDate = '04-02-2014' 
WHERE holidayid in ( 
  SELECT holidayid 
  FROM Holiday
  WHERE holidayName = 'Package A'
) ;