Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
14-16736
CS
2004-01-18 14:40
2004.02.06
Бесплатный хостинг


1-16447
Zheks
2004-01-28 09:44
2004.02.06
try/except


3-16128
Karlson
2004-01-15 15:37
2004.02.06
значения Null


8-16531
Sapersky
2003-10-01 13:19
2004.02.06
Запихнуть комментарий в JPEG


9-16025
alexus
2003-07-22 10:53
2004.02.06
Алгоритм игры Го