/ / Възможно ли е да се попълнят нулеви полета, ако в други записи в същата таблица съществуват правилни стойности? - sql, ms-достъп

Възможно ли е да се попълнят нулеви полета, ако в други записи в същата таблица съществуват правилните стойности? - sql, ms-достъп

Понастоящем в моя набор от данни има конкретно поле, където някои от записите нямат стойности; полето е разрешено да бъде NULL в схемата.

Понякога обаче тези данни се попълват в други записи в базата данни въз основа на идентификационния номер.

Бих искал да стартирам заявка за актуализиране на тези NULLполета със съответните стойности въз основа на съдържанието на останалата част от базата данни. Да приемем, че никога няма да има противоречащи си стойности за тези полета.

Например:

ID      Identifier          Address                    Name            OrderID
123                         23 Sheppard Court          David           465464322
456     100100100100        29 Milestone Cres          Terry           651654986
789     200200200200        102 Dynamo Drive           Joseph          397431357
123     300300300300        23 Sheppard Court          David           516198532

Записите в горния пример са уникални, но полето "Идентификатор" не е попълнено за първия ред.

Бих искал да стартирам заявка, която ще ми позволи бързо да актуализирам това липсващо поле със съответната стойност, т.е. 300300300300 в този случай.

Отговори:

1 за отговор № 1

Да приемем, че никога няма да има противоречащи си стойности за тези полета.

Ако това е валидно предположение, това е най-простото решение (ако се приеме, че ID е основният ключ, който планирате да използвате за запълване на стойностите):

UPDATE tableName a
SET identifier = (
SELECT distinct identifier
FROM tableName b
WHERE a.id = b.id
AND identifier IS NOT NULL)
WHERE identifier IS NULL

Можете да получите фермер с MERGE INTO синтаксис, но не съм сигурен дали това е достъпно за достъп.


0 за отговор № 2

Актуализира всичките ви липсващи идентификатори.

UPDATE yourTable t1
SET t1.Identifier =
(SELECT TOP 1 Identifier FROM yourTable
WHERE t1.Identifier IS NOT NULL)
WHERE t1.Identifier IS NULL

Sidenote: Как е възможно да имате такива объркани данни? Обикновено трябва никога трябва да пускат такива актуализации във вашата база данни.

Също така имате ли първичен ключ в таблицата си? Защото не мога да видя един и това наистина е трябва да на почти всяка маса.