Database
 sql >> база данни >  >> RDS >> Database

Как да актуализирате колона въз основа на филтър на друга колона

В този урок ще разгледаме различните начини за актуализиране на редове в таблица с помощта на SQL, преминавайки от по-общи актуализации към по-специфични методи.

Пълна актуализация

Ако всяко поле трябва да бъде актуализирано до една и съща стойност, можете да направите това с помощта на проста UPDATE команда.

UPDATE table
SET col = new_value;

Условна актуализация

За да направите условна актуализация в зависимост от това дали текущата стойност на колона съответства на условието, можете да добавите WHERE клауза, която уточнява това. Базата данни първо ще намери редове, които съответстват на WHERE клауза и след това извършва актуализации само на тези редове.

UPDATE table
SET col = new_value
WHERE col = old_value;

За да разширите това, можете да добавите каквото и да било към WHERE клауза, която харесвате, стига да е валиден израз. Така че, за да извършите актуализация въз основа на стойността на друга колона в същата таблица, можете да изпълните следното:

UPDATE table
SET col = new_value
WHERE other_col = some_other_value;

Тъй като WHERE клаузата може да съдържа всеки валиден израз, вие също така имате възможност да правите актуализации, където множество колони отговарят на критериите

UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;

UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;

Както можете да видите, можете да разширите WHERE клауза толкова, колкото искате, за да филтрирате редовете за актуализиране до това, от което се нуждаете.

Сега какво се случва, ако искате да актуализирате редове в една таблица въз основа на състоянието на друга таблица? Този въпрос води до няколко различни начина, по които можете да направите това.

Тъй като WHERE клаузата може да съдържа всеки валиден израз, можете да използвате подзаявка:

UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);

Можете също да използвате подзаявка в SET част от израза, ако искате да зададете колоната на стойност в друга таблица

UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);

Може би по-лесен начин е да посочите няколко таблици след UPDATE клауза. Само SET Expression ще извърши актуализации, но изброяването на допълнителни таблици ще позволи таблиците да бъдат включени.

UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;

Подобно на разширяването на WHERE клауза, количеството таблици може да бъде разширено, за да включи всички таблици, от които се нуждаете, ако имате няколко таблици, които трябва да бъдат обединени.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SCD тип 4

  2. Работа с Java данни в Qlik Sense

  3. Блокчейн:какво е това, как работи и какво означава за големи данни

  4. Salesforce SOQL от Apache OpenOffice

  5. Разширени събития за SSAS