«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как обновить пустые значения в таблице на основе данных из других строк с тем же именем?

Как обновить пустые значения в таблице на основе данных из других строк с тем же именем?

Опубликовано 16 ноября 2024 г.
Просматривать:134

How do I update empty values in a table based on data from other rows with the same name?

Копирование данных между строками таблицы

При управлении базами данных часто необходимо обновлять строки на основе данных из других строк таблицы. тот же стол. Рассмотрим таблицу со столбцами ID, NAME и VALUE, которая содержит повторяющиеся значения NAME, а именно:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |         |
 4   |   Test    |         |
 1   |   Test3   |  VALUE3 |

Предположим, мы хотим обновить пустые поля VALUE в строках с повторяющимися значениями NAME. Чтобы добиться этого, мы можем использовать SQL-запросы, которые ссылаются и обновляют значения в одной и той же таблице.

Один из подходов предполагает использование оператора UPDATE с объединением. В следующем запросе мы дважды присоединяемся к data_table, присваивая им псевдонимы dt1 и dt2:

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 

Этот запрос идентифицирует и обновляет пустые поля VALUE (где dt1.VALUE пусто) с непустыми ЗНАЧЕНИЯ из других строк с тем же ИМЯ (где dt2.VALUE не пусто).

В качестве альтернативы мы можем использовать подзапрос, чтобы идентифицировать строки с непустыми ЗНАЧЕНИЯМИ и присоединить их обратно к исходной таблице. для обновления:

UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE
                        FROM data_table
                       WHERE VALUE IS NOT NULL AND VALUE != '') t1
   SET t.VALUE = t1.VALUE
 WHERE t.ID = t1.ID
   AND t.NAME = t1.NAME

Оба этих запроса дадут желаемый результат:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |  VALUE2 |
 4   |   Test    |  VALUE1 |
 1   |   Test3   |  VALUE3 |

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3