Обновите значения из существующего столбца в таблице с sqlite3 и python - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь добавить столбец из таблицы2 в мою существующую таблицу1.

таблица1 выглядит следующим образом (это пример с 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)")

Спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

Вам нужен коррелированный подзапрос:

UPDATE table1
    SET item = (SELECT t2.item FROM table2 t2 WHERE t2.id = table1.id);

Я удивлен, что ваша версия не возвращает ошибку.Условие WHERE интерпретируется как WHERE table2.id = table2.id, что означает, что должны быть возвращены все строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...