我已经尝试了我在这里和其他网站上看到的一切。我开始认为用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
答案 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)