SQLite3更新连接不起作用

时间:2013-09-19 15:45:18

标签: sqlite

我已经尝试了我在这里和其他网站上看到的一切。我开始认为用SQLite3(V 1.2.2)和SQLite(V 3.7.3)进行更新连接是不可能的。多年来我一直是MSSql Server开发人员。 SQLite是一种不同的动物。如果我在TSQL中有Cursor功能,我就这样处理它。以下查询基于多个站点上的建议。这是我最近的尝试不起作用。

update alertsettings
   set IP_Desc = (select temp_tbl.Import_Rec
                    from alertsettings,
                         temp_tbl
                   where temp_tbl.IPAddress = alertsettings.IPAddress)

这应该根据我见过的示例,使用连接到匹配IP的相应描述更新每条记录。所有IP都是独一无二的。它确实更新,但更新所有记录然后具有相同的IP_Desc。在576条记录中,它匹配一条记录。我不确定它为什么会起作用,因为与当前正在更新的记录没有任何关系。 “选择”加入“选择”而不是“更新”。

谢谢 - Hostdad

1 个答案:

答案 0 :(得分:0)

当您编写alertsettings.IPAddress时,该值取自与名称alertsettings匹配的 innermost 表。 在您的查询中,这是内部alertsettings中的select,它独立于外部update中的记录。

您实际上并不想要 join ,您希望子查询只从另一个表中查找单个值:

update alertsettings
   set IP_Desc = (select Import_Rec
                    from temp_tbl -- no second table here
                   where IPAddress = alertsettings.IPAddress)