sqlite更新(不加入)

问题描述:

很新的SQLite(和SQL)。尝试使用另一个表修改一个表。sqlite更新(不加入)

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

我想根据僵尸中提供的列表更新IsDead列。 SQLite显然不能使用连接与更新。考虑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 
); 
+0

你能举一个你的更新语句的例子吗?什么不工作。 – Genzume

+0

[更新具有相同用户名的另一个表中的表值的可能的副本](https://*.com/questions/3845718/update-table-values-from-another-table-with-the-same-user-姓名) –

我想你会发现你这里寻找答案:Update table values from another table with the same user name

如果你有合适的主键的设置,你这样做,那么这应该是相当直截了当。

+0

谢谢。这就是它。 – jobobo

您可以利用INSERT或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)