我第一次在sqlite上工作 我在以下问题上需要帮助 我有2个表格如下
键值
a 1
b 2
c 3
e 7
f 41
j 52
键值
空的
b null
c null
d null
e null
f null
g null
j null
我正在尝试更新test2的值,如果表test2 = test1中的键然后更新值或者将其置为空
预期输出就像这样
键值
a 1
b 2
c 3
d null
e 7
f 41
g null
j 52
我尝试这个查询
插入test2([value])
选择test1.value
来自test1,test2
其中test2.value = test1.value;
但它不起作用 怎么解决这个?
答案 0 :(得分:1)
(假设您的意思是条件UPDATE,而不是INSERT)
幸运的是,您似乎需要将test2
重置为null,否则连接失败,因此您可以使用指定为子查询的集合进行更新:
update test2
set value =
(SELECT t1.value
FROM test1 t1 where t1.key = test2.key
LIMIT 1);
LIMIT
将确保只返回一行,但如果test1和test2之间的关系不是1:1,则需要应用逻辑来确定如何连接这两个表。
答案 1 :(得分:0)
试试这个,不知道sqllite语法,但应该是这样的。因为您的test2表已经具有空值,所以只需更新值列,其中键值与test1表匹配
<强> 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不支持join in update语句,但你可以在子查询中使用
<强> SQLLITE 强>
UPDATE test2 SET [value] = (
SELECT [value] FROM test1 WHERE test1.key = test2.key)
答案 2 :(得分:0)
试试这个
更新test2 SET值=(SELECT test1.value 从test1 在哪里test2.key = test1.key);