条件UPDATE sqlite语句

时间:2015-01-07 14:07:09

标签: sql database sqlite

我第一次在sqlite上工作 我在以下问题上需要帮助 我有2个表格如下

TEST1


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

TEST2


键值
空的 b null
c null
d null
e null
f null
g null
j null

我正在尝试更新test2的值,如果表test2 = test1中的键然后更新值或者将其置为空

预期输出就像这样

TEST2


键值
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;

但它不起作用 怎么解决这个?

3 个答案:

答案 0 :(得分:1)

(假设您的意思是条件UPDATE,而不是INSERT)

幸运的是,您似乎需要将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,则需要应用逻辑来确定如何连接这两个表。

答案 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);