1185 / 755 / 127
Регистрация: 10.03.2012
Сообщений: 4,856

Использование update для нескольких замен

21.03.2012, 03:49. Показов 40375. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
SQL
1
2
3
UPDATE ...
SET ...
WHERE ...
А как использовать сразу для нескольких замен?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2012, 03:49
Ответы с готовыми решениями:

Как организовать журналирование insert / update / delete для нескольких таблиц?
Используется MySQL - 5.7 - х64 Имеется несколько таблиц с приблизительно следующим кол. и типам полей. Количество полей и...

Использование BindingNavigator для нескольких Datagridview
Как использовать один BindingNavigator для управления данными в нескольких Datagridview , которые находятся в разных вкладках? К примеру,...

Использование нескольких потоков для игры
Пишу игру на C++. Мне нужно использовать два объекта: игрока и противника. Противник должен двигаться медленнее, то есть должен двигаться с...

11
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.03.2012, 07:26
Если вам нужно в пределах одного набора строк, сделать замену нескольких столбцов, то в наборе SET можно перечислять столбцы через запятую

SQL
1
2
3
4
UPDATE tabl
SET col1=1
  , col2=2
WHERE ...
Если вам нужно сделать несколько замен для разных наборов строк, то нужно несколько раз вызвать update.
0
1185 / 755 / 127
Регистрация: 10.03.2012
Сообщений: 4,856
21.03.2012, 17:56  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Если вам нужно сделать несколько замен для разных наборов строк, то нужно несколько раз вызвать update.
То есть если мне в одном столбце нужно сделать несколько замен, тогда каждый раз update использовать?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.03.2012, 18:25
Цитата Сообщение от Invincible Посмотреть сообщение
То есть если мне в одном столбце нужно сделать несколько замен, тогда каждый раз update использовать?
Если замены никак не связаны между собой, то да - каждый раз update.
Если есть какая-либо связь, то можно объединять. Например можно присвоить столбцу значение какой-либо функции, в таком случае, для каждой обновляемоу строки посчитается своё значение функции.

Например обновим столбец col1, чтобы он содержал длину строки столбца сol2
SQL
1
2
3
UPDATE TBL
SET col1 = LENGTH(col2)
WHERE ...
0
1185 / 755 / 127
Регистрация: 10.03.2012
Сообщений: 4,856
21.03.2012, 18:57  [ТС]
Как допустим в такой ситуации правильно?
Oracle 11 SQL
1
2
3
4
5
6
7
UPDATE Tab
SET sex='M'
WHERE sex='male'
 
UPDATE Tab
SET sex='W'
WHERE sex='female'
Или
Oracle 11 SQL
1
2
3
4
5
UPDATE Tab
SET sex='M',
sex='W'
WHERE sex='male',
sex='female'
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.03.2012, 19:07
Первый правильный
Второй не правильный

Но есть способ записать с помощью одного update
SQL
1
2
3
4
UPDATE Tab
SET sex = (CASE WHEN sex = 'male' THEN 'M' ELSE 'W' END)
WHERE sex = 'male'
   OR sex = 'female'
0
1185 / 755 / 127
Регистрация: 10.03.2012
Сообщений: 4,856
23.03.2012, 05:12  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Но есть способ записать с помощью одного update
А если у меня 10 значений, то можно записать через один update?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.03.2012, 07:03
Цитата Сообщение от Invincible Посмотреть сообщение
А если у меня 10 значений, то можно записать через один update?
Можно то, конечно можно, другое дело, зачем так делать. Большое выражение сложнее читается, и его сложнее править.
0
1185 / 755 / 127
Регистрация: 10.03.2012
Сообщений: 4,856
24.03.2012, 05:58  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Можно то, конечно можно, другое дело, зачем так делать. Большое выражение сложнее читается, и его сложнее править.
Как это будет записоваться, можете пример показать?
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
24.03.2012, 14:15
Поиск то не рулит?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
26.03.2012, 07:25
Цитата Сообщение от Invincible Посмотреть сообщение
Как это будет записоваться, можете пример показать?
Я же привел пример для двух значений, вы даже по аналогии не можете сообразить?
0
45 / 44 / 2
Регистрация: 06.02.2012
Сообщений: 147
26.03.2012, 09:31
ну и я тогда поумничаю...
если у вас 5-10 вариантов, то можете тупо написать 5-10 апдейтов.
Но если количество и условия часто меняются.... то:
1) пишите апдейт с двумя параметра:
Oracle 11 SQL
1
2
3
UPDATE tab1
SET col1 = :p1
WHERE col2 = :p2
потом загоняешь значения в два масива "что обновить" и "на что обновить".
Бежишь по этим масивам и подставляешь их в апдейт.
Вуаля! - даже если условия и значения поменяются - логика ПО останется прежней.

2) если значений ну ооочень много, есть мсысл перекинуть все на оракл...
создай свой табличный тип... (
Oracle 11 SQL
1
2
CREATE OR REPLACE TYPE ARR_VACHAR AS
    TABLE OF NVARCHAR2(100)
).
ну а дальше по аналогии...
загоняешь туда значения...
и пишешь
Oracle 11 SQL
1
2
3
4
FORALL i  IN list1.FIRST..list1.LAST
UPDATE tab1
SET col1 = list1(i)
WHERE col2 = list2(i)
но так лучше страдать только если у тебя кол-во апдейтов переваливает за 100000...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2012, 09:31
Помогаю со студенческими работами здесь

Использование функции для нескольких полей единожды
Доброго времени суток! В ангуляре пока только новичок. Задание такое: есть прототип опросника (вопросы с чекбоксом, полями ввода, вопросы с...

Использование одного генератора для нескольких таблиц
Как использовать один генератор для нескольких таблиц? нашел следующие варианты: CREATE PROCEDURE GETNEWID (GEN VARCHAR(30)) RETURNS...

Использование одного метода для нескольких кнопок
Здравствуйте, у меня в программе есть много кнопок и следующий метод: public int Get_num() { int num = 0; ...

Использование нескольких функций для одной переменной
Здравствуйте! В программах видел такое: предположим, есть переменная типа string (string f = "f";), и есть string example() {}....

Использование одного раздела swap для нескольких систем?
Можно ли использовать один раздел swap для нескольких систем на основе linux? Планирую установить Ubuntu и Kali linux, можно ли при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru