sqlite更新(没有连接)

时间:2011-11-06 03:51:02

标签: sql sqlite

sqlite(和sql)的新手。尝试使用另一个表修改一个表。

create table Person(Key1 INTEGER, Key2 INTEGER, Name, IsDead, PRIMARY KEY (Key1,Key2));
create table Zombie(Key1 INTEGER, Key2 INTEGER, PRIMARY KEY (Key1,Key2));

我想根据Zombie中提供的列表更新IsDead列。 SQLite显然不能使用join更新。考虑UPDATE或REPLACE语句。 提前谢谢。

根据@Tyler Ferraro,以下是解决方案。

UPDATE Person
SET IsDead = 1
WHERE EXISTS
(
SELECT *
FROM Zombie
WHERE Person.Key1 = Zombie.Key1 and Person.Key2 = Zombie.Key2
);

下面适用于单个键,但我不知道如何处理复合键。

UPDATE Person
SET IsDead = 1
WHERE Key1
IN
(
SELECT Key1
FROM Zombie
);

2 个答案:

答案 0 :(得分:1)

我想你会在这里找到你想要的答案:Update table values from another table with the same user name

如果你有正确的主键设置,那么这应该是相当直接的。

答案 1 :(得分:1)

您可以利用 INSERT OR REPLACE INTO 语句。

INSERT OR REPLACE INTO Table1 
    (col1,col2,col3)
select Col1,Col2,Col3
from Table1 t1
inner join Table2 t2 on t1.Col1 = t2.Col1

如果您在一个更多列上使用语句创建唯一索引时面对任何重复记录根据你的逻辑,然后不会出现重复问题。

CREATE UNIQUE INDEX idxName ON Table1 (Col1,Col2)