SQLITE Обновление с условиями .... тогда дело? - PullRequest
0 голосов
/ 06 апреля 2020

Заранее спасибо. Я пытаюсь обновить таблицу с датой другой таблицы. Я понял это правильно, но теперь я хочу обновить каждую строку, только если в исходной таблице выполняется 4 условия.

UPDATE newtable SET Serial = CASE WHEN(
 (SELECT ETI FROM oldtable) != 0.0) 
 AND ((SELECT Serial FROM oldtable) != 0000) 
 AND ((SELECT Hardware FROM oldtable) != 0000) 
 AND ((SELECT Software FROM oldtable) != 0000)
THEN (SELECT Serial FROM oldtable  WHERE newtable.IDENT= oldtable.IDENT)END,

....

это обновляет всю строку, поэтому 4 условия не работают.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 06 апреля 2020

Я думаю, что вы можете сделать это с помощью коррелированных подзапросов, например, так:

update newtable
set serial = (
    select serial 
    from oldtable
    where ident = newtable.ident and serial <> 0 and hardware <> 0 and software <> 0 and eti <> 0
)
where exists (
    select serial 
    from oldtable
    where ident = newtable.ident and serial <> 0 and hardware <> 0 and software <> 0 and eti <> 0
)

Совершенно неясно, что типы данных столбцов serial, hardware, software и т. Д. , Я предположил, что это числа (потому что выглядят как числа). Возможно, вам придется адаптировать его для вашего конкретного случая использования.

...