Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизUPDATE в SQL Найти похожие ветки
← →
ish (2004-01-10 09:08) [0]Подскажите пожалуйста начинающему:
При работе требуется сделать UPDATE для одного поля (SET x=) по нескольким условиям (WHERE), Например:
SET x= 10
WHERE REZ = 20
SET x=30
WHERE REZ = 40
SET x=100
WHERE REZ = 80
и т.д.
Вопрос в том, как поставить SQL - запрос - использовать несколько UPDATE для каждого блока SET.. WHERE, или UPDATE будет
один, но много SET .. WHERE в нем?
А может сделать SELECT, а по нему UPDATE, а потом еще один SELECT
и по нему другой UPDATE ...
???
← →
ЮЮ (2004-01-10 09:15) [1]UPDATE TABLE SET X = :X WHERE REZ = :REZ
И выполнить столько раз, сколько нужно, не забывая менять параметры запроса
← →
Alone Corsar (2004-01-10 09:18) [2]встречный вопрос не овсем понятно что такое REZ?? это поле в таблице??
← →
Vemer (2004-01-10 09:24) [3]А лучше (и быстрее) по ID строки ориентироваться, если одна запись правиться. При обработке группы строк в условий Where также AND, OR, Beetween, In применять можно по необходимости.
UPDATE TABLE SET X = :X WHERE ID = :ID (1 строка)
UPDATE TABLE SET X = :X WHERE REZ = :REZ AND Type = :Type (группа)
← →
ish (2004-01-10 09:35) [4]А что вы думаете на счет - "А может сделать SELECT, а по нему UPDATE, а потом еще один SELECT
и по нему другой UPDATE ...???"
← →
ЮЮ (2004-01-10 09:47) [5]>SELECT, а по нему UPDATE
WHERE в UPDATE и есть то же самое, что и в SELECT
← →
ish (2004-01-10 09:56) [6]Ответ ЮЮ
если несколько раз писать
UPDATE TABLE SET X = :X WHERE REZ = :REZ
то выдается ошибка синтаксиса в выражении запроса
← →
Johnmen (2004-01-10 14:58) [7]>ish © (10.01.04 09:56)
Пишется 1 (один) раз. Выполняется - столько раз, сколько надо...
← →
HakoLamer (2004-01-10 15:10) [8]если несколько раз писать...
Query1.SQL.Clear;
Query1.SQL.Add("UPDATE TABLE SET X = :X WHERE REZ = :REZ");
Query1.ExecSQL;
....то может все получится
← →
ЮЮ (2004-01-12 03:49) [9]>Hako Lamer (10.01.04 15:10) [8]
Праметрический запрос для того и используется, чтобы написать запрос один раз, выполнить Prepare и использовать много раз
← →
SergSuper (2004-01-12 10:34) [10]если Ваш SQL поддерживает вложенные селекты можно как-то так написать:
update YourTbl
set x=xx
from YourTbl, (select 10 xx, 20 rr union select 30,40
union select 80,100) ss
where REZ=rr
еще лучше какую-нибудь книжку почитать
← →
Sergey13 (2004-01-12 10:44) [11]2SergSuper (12.01.04 10:34) [10]
Твой SQL такое поддерживает?
← →
SergSuper (2004-01-12 12:24) [12]
> Sergey13
У меня MSSQL2000 - он поддерживает. Оракл тоже должен поддерживать, про остальные не знаю.
← →
ZrenBy (2004-01-12 13:22) [13]update table
set Value = case
when ID = 1 then "A"
when ID = 4 then "B"
when ID = 7 then "C"
end
where ID in (1,4,7)
← →
Valwww (2004-01-12 13:48) [14]А в Oracle 8i CASE в UPDATE не проходит.
← →
Vlad (2004-01-12 13:59) [15]>Valwww (12.01.04 13:48) [14]
В Оракле 8i насколько я помню, можно так:
update table
set Value = decode(ID,1,"А",4,"B",7,"C") where...
← →
kaif (2004-01-12 14:07) [16]ish © (10.01.04 09:56) [6]
Ответ ЮЮ
если несколько раз писать
UPDATE TABLE SET X = :X WHERE REZ = :REZ
то выдается ошибка синтаксиса в выражении запроса
Там имя таблицы пропущено.
← →
Valwww (2004-01-12 15:29) [17]>Vlad
а в Oracle 9i decode остался?
← →
Vlad (2004-01-12 15:34) [18]
> Valwww (12.01.04 15:29) [17]
угу... :-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.032 c