No hay nada de malo en la sintaxis, pero no obtengo el valor correcto de ParentCategoryId. ¿Cómo puedo obtenerlo?
UPDATE Category
SET ParentCategoryId = (
SELECT c2.id
FROM Category AS c2
WHERE c2.OldId = ParentCategoryId -- << how can I get this value
)
WHERE OldId IS NOT NULL
Debe proporcionar las referencias de columna adecuadas en dos partes.
Tal como está, el DB no tiene idea de que ParentCategoryId
en la subconsulta se refiere a la columna exterior.
UPDATE c
SET ParentCategoryId = (
SELECT c2.id
FROM Category AS c2
WHERE c2.OldId = c.ParentCategoryId
)
FROM Category AS c
WHERE c.OldId IS NOT NULL;
También puede hacer esto como una actualización conjunta:
UPDATE c
SET ParentCategoryId = c2.id
FROM Category AS c
JOIN Category AS c2 ON c2.OldId = c.ParentCategoryId;
-- WHERE c.OldId IS NOT NULL; -- not necessary as now joined
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras