我正在尝试将table2中的列添加到现有table1中。
table1看起来像这样(这是一个2列的示例,但实际上我有100多个):
id | item | price
-------------
1 | book | 20
2 | copy | 30
3 | pen | 10
和这样的table2:
id | item
----------
1 | book
2 | copy
3 | pen
我想得到这个:
id | item | price | item
---------------------
1 | book | 20 | book
2 | copy | 30 | copy
3 | pen | 10 | pen
但是,我得到的都是相同的第一行值:
id | item | price | item
---------------------
1 | book | 20 | book
2 | copy | 30 | book
3 | pen | 10 | book
我在代码中做错了什么?
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("ALTER TABLE table1 ADD COLUMN item text")
cur.execute("UPDATE table1 SET item = (SELECT item FROM table2 WHERE table2.id = id)")
谢谢!
答案 0 :(得分:0)
您需要一个相关子查询:
UPDATE table1
SET item = (SELECT t2.item FROM table2 t2 WHERE t2.id = table1.id);
我很惊讶您的版本没有返回错误。 WHERE
条件被解释为WHERE table2.id = table2.id
,这意味着应该返回所有行。