使用外键引用更新SQLite值
给定三个表,其中一个表用作包含两个外键列的联接表,我尝试进行插入,以便在给定使用外键引用更新SQLite值,sqlite,sql-update,foreign-keys,left-join,Sqlite,Sql Update,Foreign Keys,Left Join,给定三个表,其中一个表用作包含两个外键列的联接表,我尝试进行插入,以便在给定TableA.prefix、TableA.number、TableB.prefix和TableB.number的情况下,我可以为JunctionTable中的匹配行更新JunctionTable.is\u存档列: 因此,尽管JunctionTable中的匹配行当前看起来像: +----------------------------------------------------------------------+ |
TableA.prefix
、TableA.number
、TableB.prefix
和TableB.number
的情况下,我可以为JunctionTable
中的匹配行更新JunctionTable.is\u存档列:
因此,尽管JunctionTable中的匹配行当前看起来像:
+----------------------------------------------------------------------+
| id | tblA_id | tblB_id | is_archived |
| 3 | 7 | 98 | 0 |
+----------------------------------------------------------------------+
表A和表B中匹配的行如下所示:
表
+----------------------------------------------+
| id | prefix | number |
| 7 | CLA | 754 |
+----------------------------------------------+
表B
+----------------------------------------------+
| id | prefix | number |
| 98 | RED | 221 |
+----------------------------------------------+
我想像这样更新is\u archived
值:
+----------------------------------------------------------------------+
| id | tblA_id | tblB_id | is_archived |
| 3 | 7 | 98 | 1 |
+----------------------------------------------------------------------+
我根据找到的信息尝试了几种不同的陈述,但它们无效:
UPDATE JunctionTable
SET is_archived = "1"
WHERE tblAid =
(SELECT id FROM TableA WHERE prefix = "CLA" AND number = 754)
AND tblB.id =
(SELECT id FROM TableB WHERE prefix = "RED" AND number = 221)
UPDATE JunctionTable
SET is_archived = "1"
WHERE (
LEFT JOIN TableA ON JunctionTable.tblA_id=TableA.id
WHERE TableA.course_prefix = "CLA" AND TableA.course_number = 754
LEFT JOIN TableB ON JunctionTable.tblB_id=TableB.id
WHERE TableB.course_prefix = "RED" AND TableB.course_number = 221)
在第一个查询中,问题似乎是连接表中ID列的名称(“tblay”和“tblB.ID”),并且使用双引号而不是单引号。这应该起作用:
UPDATE JunctionTable
SET is_archived = 1
WHERE tblA_id =
(SELECT id FROM TableA WHERE prefix = 'CLA' AND number = 754)
AND tblB_id =
(SELECT id FROM TableB WHERE prefix = 'RED' AND number = 221)
我在PHP中使用UPDATE语句,所以我保留了双引号,它工作起来很有魅力-谢谢!