条件更新 sqlite 语句

conditional UPDATE sqlite statement

我第一次使用 sqlite
我需要帮助解决以下问题
我有 2 tables 如下

测试1


键值
一个 1
b 2
c 3
e 7
f 41
j 52

测试2


键值
一个 空
b 空
c 空
d 空
e 空
f 空
g 空
j 空

我正在尝试更新 test2 的值,如果在 table test2 = test1 中键入然后更新值,否则将 null

预期的输出是这样的

测试2


键值
一个 1
b 2
c 3
d 空
e 7
f 41
g 空
j 52

我试试这个查询

插入测试 2([值]) select test1.value
来自测试 1、测试 2
其中 test2.value= test1.value;

但它不起作用
如何解决这个问题?

(假设您指的是条件更新,而不是插入)

幸运的是,您似乎需要在连接失败的地方将 test2 重置为 null,因此您可以使用指定为子查询的集合进行更新:

update test2
set value = 
(SELECT t1.value
 FROM test1 t1 where t1.key = test2.key
 LIMIT 1);

SqlFiddle:

LIMIT 将确保只返回一行,但如果 test1 和 test2 之间的关系不是 1:1,您将需要应用逻辑来确定如何连接两个表。

尝试这个,不知道 sqllite 语法但应该是这样的。因为你的 test2 table 已经有空值所以你只需要更新键值与 test1 table

匹配的值列

MSSQL:-

UPDATE R 
SET R.[value] = p.[value]
FROM dbo.test2 AS R
INNER JOIN dbo.test1 AS P 
       ON R.[key] = P.[key] 

我只是关注this 然后我看到 sql lite 不支持在更新语句中加入,但是你可以在子查询中使用

SQLLITE

UPDATE test2 SET [value] = ( 
             SELECT [value] FROM test1 WHERE test1.key = test2.key)

试试这个

更新测试2 设置值 = (SELECT test1.value 从测试1 其中 test2.key =test1.key) ;