Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-16276
IgAn
2004-01-26 09:13
2004.02.06
изменение палитры


1-16272
MakNik
2004-01-26 11:09
2004.02.06
ASCII коды кнопок управления курсором


1-16243
AngelOid
2004-01-26 16:25
2004.02.06
Создание новых компонентов


14-16608
Стесняюсь...
2004-01-02 00:57
2004.02.06
Пачеко


14-16695
Radionov Alexey
2004-01-16 12:09
2004.02.06
Информатику в массы!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский