2011-11-06 64 views
0

很新的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://stackoverflow.com/questions/3845718/update-table-values-from-another-table-with-the-same-user-姓名) –

回答

1

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