Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
194 / 13 / 3
Регистрация: 20.01.2015
Сообщений: 180
1

UPDATE и LIMIT обновление с пределом

20.11.2024, 21:41. Показов 275. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Какая конструкция будет работать в базах PostgreSQL и MySQL

SQL
1
2
3
4
UPDATE cust
SET cust_num = 'New_num' 
WHERE cust_curd = 'black'
LIMIT 1;
или

SQL
1
2
3
4
5
6
7
8
9
UPDATE cust
SET cust_num = 'New_num' 
WHERE cust_curd IN 
( 
  SELECT cust_curd 
  FROM cust
  WHERE cust_curd = 'black'
  LIMIT 1
);
Пример условный, объясню в чем суть, значение 'black' может быть уникальным может быть нет. Основная цель, снучайно потерялось WHERE, обновился весь столбец, этого допустить нельзя.
1. Придел LIMIT 1 как защита и убьётся всего одна строка.
2. Значение 'black' может быть не уникальным и обновятся все строки, а надо тольлько одну любую со значением 'black'

Проверить нет возможности, а на рабочей базе не рискую эксперементировать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2024, 21:41
Ответы с готовыми решениями:

Дедлоки между update limit N и update по primary key
Добрый день! Столкнулся с дедлоками, хотелось бы послушать опытных товарищей как с этим быть. ...

update и limit
Здравствуйте! Был такой запрос: UPDATE `fruit` SET `order` = '1' WHERE `user_id` =...

Laravel 5 не работает limit для update
Нужно обновить первую подпадающую под условия запись, но метод limit не работает в связке с update....

Time limit: 1.00 s Memory limit: 512 MB A game has n rooms and m tunnels between them. Each room has a certain number of
Time limit: 1.00 s Memory limit: 512 MB A game has n rooms and m tunnels between them. Each room...

6
3673 / 1337 / 477
Регистрация: 31.05.2012
Сообщений: 4,726
20.11.2024, 22:10 2
мускул 1-ый должен скушать, order by не помешало бы добавить, постгрес нет

лимит во 2-ом лишен смысла - сколько бы строк не вернул подзапрос все строки с cust_curd = 'black' в таблице обновятся
0
Айлурофил
475 / 409 / 109
Регистрация: 27.05.2017
Сообщений: 2,349
Записей в блоге: 1
20.11.2024, 22:13 3
Цитата Сообщение от aleks_des Посмотреть сообщение
Какая конструкция
Никакая.
Миниатюры
UPDATE и LIMIT обновление с пределом   UPDATE и LIMIT обновление с пределом  
0
3673 / 1337 / 477
Регистрация: 31.05.2012
Сообщений: 4,726
20.11.2024, 22:20 4
во where условие по уникальному ключу что бы всю колонку не обновить. насчет всей колонки - что все обновления скриптами что ручками формируются? там конечно можно where потерять. если же программа мождет начудить - может выбросить ее сразу, а не тогда когда начудит?
0
194 / 13 / 3
Регистрация: 20.01.2015
Сообщений: 180
20.11.2024, 22:31  [ТС] 5
К базе будет подключаться Питон значение 'black' будет формироваться Питоном из получаемых данных не могу пока представить что может пойти не так в коде чтобы обновилась вся колонка, но это допустить нельзя, а текстиль запросы буду в ручную
пример переменной с текстом запроса:
Python
1
2
3
4
qwr = f'''UPDATE cust
SET cust_num = 'New_num' 
WHERE cust_curd = '{num}'
LIMIT 1;'''
0
732 / 253 / 53
Регистрация: 01.06.2023
Сообщений: 706
20.11.2024, 23:52 6
SQL
1
2
3
4
5
6
7
8
9
UPDATE cust
SET cust_num = 'New_num' 
WHERE tid IN 
( 
  SELECT tid
  FROM cust
  WHERE cust_curd = 'black'
  LIMIT 1
);
про системную колонку tid читаем тут

Цитата Сообщение от aleks_des Посмотреть сообщение
Проверить нет возможности, а на рабочей базе не рискую эксперементировать.
для этого можно экспериментировать в режиме транзакции, главное не забывать ее откатывать
0
Модератор
9629 / 6233 / 2426
Регистрация: 21.01.2014
Сообщений: 26,591
Записей в блоге: 3
21.11.2024, 07:12 7
Цитата Сообщение от aleks_des Посмотреть сообщение
а текстиль запросы буду в ручную
что-то смысл фразы полностью ускользает!
0
21.11.2024, 07:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2024, 07:12
Помогаю со студенческими работами здесь

Что значат Power Limit и Temperature Limit в GPU-Z?
Здравствуйте. Подскажите пожалуйста, кто разбирается в GPU-Z что это за показатели и как их...

Обновление UPDATE
Есть две таблицы Institute (id_in, name_in) Center (id_cen, id_in, name_cen) ...

Обновление Update
Помогите пожалуйста, чтот не получается произвести обновление, через UPDATE, таблицы, некоторые...

Обновление в 4-х таблицах (UPDATE)
Привет, мир! Архитекторы баз данных, подскажите пожалуйста, как реализовать обновление (UPDATE) в...

Обновление данных в БД: синтаксис Update
есть форма с контролами.при нажатии на кнопку должны обновиться соответсвующие данные..подскажите...

Обновление данных методом Update
Итак, есть форма с ДатаГридом. Делаю в ДатаГриде изменения, нажимаю кнопку Сохранить и:Imports...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru