Database
 sql >> Baza danych >  >> RDS >> Database

Jak zaktualizować kolumnę na podstawie filtra innej kolumny?

W tym samouczku omówimy różne sposoby aktualizowania wierszy w tabeli za pomocą SQL, przechodząc od bardziej ogólnych aktualizacji do bardziej szczegółowych metod.

Pełna aktualizacja

Jeśli każde pole musi zostać zaktualizowane do tej samej wartości, możesz to zrobić za pomocą prostej UPDATE polecenie.

UPDATE table
SET col = new_value;

Aktualizacja warunkowa

Aby wykonać aktualizację warunkową w zależności od tego, czy bieżąca wartość kolumny pasuje do warunku, możesz dodać WHERE klauzula, która to określa. Baza danych najpierw znajdzie wiersze, które pasują do WHERE klauzuli, a następnie wykonaj aktualizacje tylko w tych wierszach.

UPDATE table
SET col = new_value
WHERE col = old_value;

Aby to rozwinąć, możesz dodać wszystko do WHERE klauzula, którą lubisz, o ile jest to prawidłowe wyrażenie. Aby przeprowadzić aktualizację na podstawie wartości innej kolumny w tej samej tabeli, możesz wykonać następujące czynności:

UPDATE table
SET col = new_value
WHERE other_col = some_other_value;

Ponieważ WHERE klauzula może zawierać dowolne poprawne wyrażenie, masz również możliwość dokonywania aktualizacji, w których wiele kolumn spełnia kryteria

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;

Jak widać, możesz rozwinąć WHERE klauzuli tyle, ile chcesz, aby przefiltrować wiersze w celu aktualizacji do tego, czego potrzebujesz.

Co się stanie, jeśli chcesz zaktualizować wiersze w jednej tabeli na podstawie stanu innej tabeli? To pytanie prowadzi do kilku różnych sposobów, w jakie możesz to zrobić.

Ponieważ WHERE klauzula może zawierać dowolne poprawne wyrażenie, możesz użyć podzapytania:

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

Możesz także użyć podzapytania w SET część instrukcji, jeśli chcesz ustawić kolumnę na wartość z innej tabeli

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

Być może łatwiejszym sposobem jest określenie wielu tabel po UPDATE klauzula. Tylko SET wyrażenie wykona aktualizacje, ale wyświetlenie dodatkowych tabel pozwoli na ich uwzględnienie.

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

Podobnie do rozwinięcia WHERE klauzula, liczba stołów może zostać rozszerzona, aby objąć wszystkie potrzebne stoły, jeśli masz kilka stołów, które trzeba połączyć.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie RazorSQL z Salesforce.com

  2. Praca z danymi Java w Sisense

  3. Stosunki pryzmatyczne

  4. Błędy, pułapki i najlepsze praktyki T-SQL – podzapytania

  5. KNIME