Sql

Update несколько полей sql: mysql — SQL Обновление нескольких строк одним запросом

Инструкция UPDATE (Microsoft Access SQL)

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Область применения: Access 2013, Office 2013

Создает запрос на обновление, который изменяет значения в полях в указанной таблице на основании заданных условий.

Синтаксис

UPDATE таблица SET новое_значение WHERE критерии;

Инструкция UPDATE состоит из трех указанных ниже частей.

таблица

Имя таблицы, содержащей данные, которые необходимо изменить.

новое_значение

Выражение, указывающее значение, которое необходимо вставить в определенное поле обновляемых записей.

критерии

Выражение, определяющее, какие записи необходимо обновить. Будут обновлены только те записи, которые удовлетворяют условиям выражения.

Инструкция UPDATE особенно полезна, когда необходимо изменить большое количество записей либо когда записи, которые необходимо изменить, находятся в нескольких таблицах.

Вы можете изменить одновременно несколько полей. В следующем примере показано, как увеличить значения Order Amount на 10 процентов, а значения Freight на 3 процента для грузоотправителей в Соединенном Королевстве:

UPDATE Orders 
SET OrderAmount = OrderAmount * 1. 1, 
Freight = Freight * 1.03 
WHERE ShipCountry = 'UK';

Важно!

  • Инструкция UPDATE не создает результирующее множество. Кроме того, после обновления записи с помощью запроса на обновление вам не удастся отменить эту операцию. Если вам необходимо узнать, какие записи были обновлены, сначала изучите результаты выполнения запроса на выборку, использующего те же критерии, а затем запустите запрос на обновление.
  • Всегда храните резервные копии данных. Если вы обновите не те записи, вы сможете восстановить их из резервных копий.

Пример

В этом примере показано, как изменить значения в поле ReportsTo на 5 для всех записей сотрудников, у которых поле ReportsTo имеет значение 2.

    Sub UpdateX() 
     
        Dim dbs As Database 
        Dim qdf As QueryDef 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Change values in the ReportsTo field to 5 for all  
        ' employee records that currently have ReportsTo  
        ' values of 2.  
        dbs.Execute "UPDATE Employees " _ 
            & "SET ReportsTo = 5 " _ 
            & "WHERE ReportsTo = 2;" 
             
        dbs.Close 
     
    End Sub

Команда SQL для удаления и обновление данных в базе (DELETE, UPDATE)

В базу данных можно не только добавлять данные, но и удалять их оттуда. Ещё существует возможность обновить данные в базе. Рассмотрим оба случая.

Удаление данных из базы (DELETE)

Удаление из базы данных происходит с помощью команды «DELETE» (переводится с английского как «УДАЛИТЬ»). Функция удаляет не одну строку, а несколько, при этом выбирает для удаления строки по логике функции «SELECT». То есть чтобы удалить данные из базы, необходимо точно определить их. Приведём пример SQL команды для удаления одной строчки:

DELETE FROM `USERS` WHERE `ID` = 2 LIMIT 1;

Благодаря этому запросу из таблицы «USERS» будет удалена одна запись, у которой в столбце «ID» стоит значение «2».

Обратите внимание, что в конце запроса стоит лимит на выборку «LIMIT 1;» размером в 1 строку. Его можно было не ставить, если поле «ID» является «PRIMARY KEY» (первичный ключ, то есть содержит только уникальные значения). Но всё-таки рекомендуем ставить ограничение «LIMIT 1;» в любом случае, если вы намерены удалить только одну строчку.

Теперь попробуем удалить сразу диапазон данных. Для этого достаточно составить запрос, в результате выполнения которого вернётся несколько строк. Все эти строки будут удалены:

DELETE FROM `USERS` WHERE `ID` >= 5;

Этот запрос удалит все строки в таблицы, у которых в столбце «ID» стоит значение меньше 5. Если не поставить никакого условия «WHERE» и лимита «LIMIT», то будут удалены абсолютно все строки в таблице:

DELETE FROM `USERS`;

На некоторых версиях MySQL способ удаления всех строк через «DELETE FROM _;

» может работать медленнее, чем «TRUNCATE _;«; Поэтому для очистки всей таблицы лучше всё-таки использовать «TRUNCATE».

Обновление данных в базе (UPDATE)

Функция обновления «UPDATE» (переводится с английского как «ОБНОВИТЬ») довольно часто используется в проектах сайтов. Как и в случае с функцией «DELETE», фкнция обновления не успокоится до тех пор, пока не обновит все поля, которые подходят под условия, если нет лимита на выборку. Поэтому необходимо задавать однозначные условия, чтобы вместо одной строки нечаянно не обновить половину таблицы. Приведём пример использования команды «UPDATE»:

UPDATE `USERS` SET `NAME` = 'Мышь' WHERE `ID` = 3 LIMIT 1;

В этом примере, в таблие «USERS» будет установлено значение «Мышь» в столбец «NAME» у строки, в столбце «ID» которой стоит значение «3». Можно обновить сразу несколько столбцов у одной записи, передав значения через запятую. Попробуем обновить не только значение с толбце «NAME», но и значение в столбце «FOOD» используя один запрос:

UPDATE `USERS` SET `NAME` = 'Мышь', `FOOD` = 'Сыр' WHERE `ID` = 3 LIMIT 1;

Если не поставить никаких лимитов LIMIT и условий WHERE, то все записи таблицы будут обновлены без исключений.

Была ли эта статья полезна? Есть вопрос?

Закажите недорогой хостинг Заказать

всего от 290 руб

Сервер Sql обновляет несколько столбцов из другой таблицы

Задавать вопрос

спросил

Изменено 2 года, 7 месяцев назад

Просмотрено 50 тысяч раз

Я прочитал много сообщений о том, как обновить несколько столбцов, но до сих пор не могу найти правильный ответ.

У меня есть одна таблица, и я хочу обновить эту таблицу из другой таблицы.

 Обновление таблицы 1
установить (a,b,c,d,e,f,g,h,i,j,k)=(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f, t2.g, t2.h, t2.i, t2.j, t2.k)
от
(
  SELECT ..... с соединением . .. где ....
) т2
    где таблица1.id = таблица2.id
 

Если я запускаю только оператор select (в скобках), то скрипт возвращает значения, но не работает с обновлением

  • sql
  • sql-server
  • sql-server-2008

TSQL не поддерживает конструктор значений строк. Используйте это вместо:

 ОБНОВЛЕНИЕ таблицы 1
УСТАНОВИТЬ а = t2.а,
    б = t2.б,
    (...)
ОТ
(
SELECT ..... с соединением ... WHERE ....
) т2
ГДЕ table1.id = table2.id
 

2

Вам не нужно использовать подзапрос, вы также можете просто сделать следующее….

 Обновление t1
установить t1.a = t2.a
   ,t1.b = t2.b
   ,t1.с = t2.с
   ,t1.d = t2.d
   .......
из таблицы1 t1
ПРИСОЕДИНЯЙТЕСЬ к таблице2 t2 ON t1.id = t2.id
ГДЕ .......
 

1

Приведенное выше решение будет работать только для MSSQL. В случае MySql вам просто нужно сначала объявить таблицы

 UPDATE
      таблица1 t1 ,таблица2 t2
набор
      t1. поле=t2.поле
где
      t1.id=t2.id;
 

В моем случае это сработало..!!

Команды UPDATE SET неявно применяются к таблице, указанной параметром , и невозможно указать таблицу в операции SET.

Изменить: укажите только имя столбца, который вы хотите обновить, не упоминая таблицу.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Как обновить несколько столбцов с одинаковыми или разными значениями в SQL?

спросил

Изменено 1 год, 3 месяца назад

Просмотрено 2к раз

Я хочу обновить несколько столбцов в таблице с одинаковыми значениями. Например, если мы рассмотрим эту таблицу.

 столбец 1 столбец 2
--------------
2 -99
-99 5
3 6
4 -99
 

Я хочу обновить значения -99 в таблице до NULL, и ожидаемый результат выглядит следующим образом.

 столбец 1 столбец 2
--------------
2 НОЛЬ
НУЛЕВОЕ 5
3 6
4 НОЛЬ
 

Я использую этот способ.

 обновить имя_таблицы установить col1 = null, где col1 = -99;
обновить имя_таблицы, установить col2 = null, где col2 = -99;
 

Или что, если я хочу обновить столбцы на уникальных условиях. Например, -99 с нулевым значением в столбце1 и 5 с нулевым значением в столбце2.

Есть ли способ добиться этого в одном выражении? Заранее спасибо.

  • sql
  • SQL-обновление

5

Можно, используя выражение case, но в чем преимущество?

 обновить набор имя_таблицы
  col1 = случай, когда col1 = -99, затем null /* или любое новое значение для col1 */ иначе col1 end
  , col2 = случай, когда col2 = -99, затем null /* или любое новое значение для col2 */ иначе col2 end
где col1 = -99 или col2 = -99;
 

Обратите внимание, как указал Ларну, когда вы устанавливаете для столбца значение null, вы можете упростить обновление до:

 обновить набор имя_таблицы
  col1 = nullif(col1,-99)
  , столбец2 = nullif(столбец2,-99)
где col1 = -99 или col2 = -99;
 

И вы можете изменить используемые вами значения (-99) для каждого столбца на все, что вы хотите, например.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *