SQL встановлює значення одного стовпця, що дорівнюють значенням іншого стовпця в тій же таблиці


94

У мене є таблиця з двома стовпцями DATETIME.

Один із них ніколи не має значення NULL, але один із них іноді є значенням NULL.

Мені потрібно написати запит, який встановить для всіх рядків NULL для стовпця B рівні значення в стовпці A.

Я спробував цей приклад, але SQL у вибраній відповіді не виконується, оскільки MySQL Workbench, схоже, не подобається FROM в ОНОВЛЕННІ.

Відповіді:




20

Я б зробив це так:

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

COALESCE - це функція, яка повертає свій перший ненульовий аргумент.

У цьому прикладі, якщо B у даному рядку не має значення null, оновлення не застосовується.

Якщо B дорівнює нулю, COALESCE пропускає його та використовує замість цього A.


5

Я не думаю, що інший приклад - це те, що ви шукаєте. Якщо ви просто оновлюєте один стовпець з іншого стовпця в тій самій таблиці, ви повинні мати можливість використовувати щось подібне.

update some_table set null_column = not_null_column where null_column is null

1

Ось зразок коду, який може допомогти вам справитись зі стовпцем A у стовпець B:

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

Примітка модератора - Будь ласка, не відміняйте дійсних оновлень до вашого допису.
Бхаргав Рао
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.