Обновление строк данными из одноуровневых таблиц в одной таблице
Представьте таблицу со структурой, напоминающей эту:
ИД | ИМЯ | ЗНАЧЕНИЕ |
---|---|---|
1 | Тест | ЗНАЧЕНИЕ1 |
2 | Тест2 | ЗНАЧЕНИЕ2 |
1 | Тест2 | NULL |
4 | Тест | NULL |
1 | Test3 | VALUE3 |
Ваша задача — заполнить пустые ячейки «ЗНАЧЕНИЕ» данными из других строк с тем же «ИМЯ» (т. е. «Test» и «Test2» должны наследовать значения от своих предшественников). Желаемый результат:
ID | ИМЯ | ЗНАЧЕНИЕ |
---|---|---|
1 | Тест | ЗНАЧЕНИЕ1 |
2 | Тест2 | ЗНАЧЕНИЕ2 |
1 | Тест2 | ЗНАЧЕНИЕ2 |
4 | Тест | ЗНАЧЕНИЕ1 |
1 | Тест3 | VALUE3 |
Проблема заключается в создании ссылок на строки внутри одного и того же элемента таблица, которая имеет определенное значение «NAME». Решение включает использование оператора JOIN:
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
В этом операторе подзапрос (T1) извлекает отдельные строки с непустыми и непустыми значениями «VALUE». Затем основной запрос (t) объединяется с этим подзапросом в полях «ID» и «NAME», чтобы идентифицировать строки, которые необходимо обновить. В результате пустые ячейки «ЗНАЧЕНИЕ» заполняются соответствующими значениями из непустых строк с тем же значением «ИМЯ».
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3