条件更新 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);
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) ;
我第一次使用 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);
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) ;