Подтвердить что ты не робот

Обновление с помощью соединения в SQLite

У меня есть 2 таблицы и мне нравится обновлять один из них значениями из другого.

software
---------
id ,
purchprice

softwarecost
------------
id ,
purchprice

Я пробовал эти запросы, но SQLite не поддерживает JOINS с UPDATE.anybody, кто может придумать запрос для this.thanks для вашей помощи.

UPDATE software 
SET software.purchprice=softwarecost.purchprice 
WHERE software.id=softwarecost.id

UPDATE software 
INNER JOIN softwarecost on software.id=softwarecost.id 
SET software.purchprice=softwarecost.purchprice 
4b9b3361

Ответ 1

Это будет работать

UPDATE 
      software
SET purchprice = (SELECT purchprice
                  FROM softwarecost
                  WHERE id = software.id) 
where EXISTS (SELECT purchprice
                  FROM softwarecost
                  WHERE id = software.id)

Здесь мы используем, потому что без этого запрос установит значение параметра software.purchprice равным null, если не найдена "коррелированная" строка.

Ответ 2

Вы должны найти соответствующие значения с помощью коррелированного подзапроса:

UPDATE software
SET purchprice = (SELECT purchprice
                  FROM softwarecost
                  WHERE id = software.id)

Ответ 3

Эта инструкция будет работать нормально!

Он обновит только строки в "программном обеспечении", которые имеют одинаковый идентификатор в "softwarecost"!

UPDATE software SET software.purchprice = 
     (SELECT purchprice FROM softwerecost WHERE software.id = softwerecost.id) 
     WHERE id IN (SELECT id FROM softwarecost);

Еще один способ сделать это:

DELETE FROM software WHERE id IN (SELECT id FROM softwarecost);
INSERT INTO software SELECT * FROM softwarecost;

... этот способ более удобен, если вам нужно обновить все столбцы (если у вас больше столбцов для обновления)

Ответ 4

Carter, проблема с → рядом с "s": синтаксическая ошибка < < речь идет об использовании ALIAS. Команда UPDATE не принимает ALIAS. Если вы попробуете bogdan tip о REPLACE, вы можете сделать объединение в предложение SELECT.

Ответ 5

Здесь нет JOIN:

UPDATE software SET software.purchprice=softwarecost.purchprice WHERE software.id=softwarecost.id

Это не сработает:

UPDATE software s INNER JOIN softwarecost sc on s.id=sc.id SET s.purchprice=sc.purchprice 

SQLite действительно не поддерживает JOIN в запросах UPDATE http://sqlite.org/lang_update.html

Как насчет использования REPLACE?
Возможно, вы могли:

REPLACE INTO software SELECT id, purchprice FROM softwarecost

Ответ 6

Вы можете попробовать как дано,

UPDATE software SET purchprice = (SELECT purchprice FROM softwarecost a WHERE a.id =software.id) where purchprice IN(SELECT distinct(purchprice) FROM softwarecost a WHERE a.id = software.id)