SQL ustawia wartości jednej kolumny równe wartościom innej kolumny w tej samej tabeli


97

Mam tabelę z dwiema kolumnami DATETIME.

Jeden z nich nigdy nie jest NULL, ale jeden z nich czasami jest NULL.

Muszę napisać zapytanie, które ustawi wszystkie wiersze NULL w kolumnie B równe wartościom w kolumnie A.

Wypróbowałem ten przykład, ale SQL w wybranej odpowiedzi nie jest wykonywany, ponieważ MySQL Workbench nie lubi FROM w UPDATE.

Odpowiedzi:


159

Wygląda na to, że pracujesz tylko przy jednym stole, więc coś takiego:

update your_table
set B = A
where B is null

21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL

21

Zrobiłbym to w ten sposób:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE to funkcja, która zwraca swój pierwszy niezerowy argument.

W tym przykładzie, jeśli B w danym wierszu nie ma wartości null, aktualizacja nie jest wykonywana.

Jeśli B jest null, COALESCE pomija go i zamiast tego używa A.


5

Nie sądzę, że szukasz innego przykładu. Jeśli aktualizujesz tylko jedną kolumnę z innej kolumny w tej samej tabeli, powinieneś móc użyć czegoś takiego.

update some_table set null_column = not_null_column where null_column is null

1

Oto przykładowy kod, który może pomóc w skopiowaniu kolumny A do kolumny B:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

Uwaga moderatora - nie cofaj ważnych aktualizacji swojego posta.
Bhargav Rao
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.