Tengo una tabla que permite decir que tiene llamada FavoriteFruits
NAME
, FRUIT
, y GUID
para las columnas. La tabla ya está poblada con nombres y frutas. Lo que permite decir:T-SQL para actualizar filas con mismo valor en una columna
NAME FRUIT GUID
John Apple NULL
John Orange NULL
John Grapes NULL
Peter Canteloupe NULL
Peter Grapefruit NULL
Ok, ahora quiero actualizar la columna GUID
con un nuevo GUID
(usando NEWID()
), pero quiero tener la misma GUID
por nombre distinto. Así que quiero que todos los John Smiths
tengan el mismo GUID
, y quiero que el Peters
tenga el mismo GUID
, pero que el GUID
sea diferente al utilizado para los Johns. Por lo que ahora se vería algo como esto:
NAME FRUIT GUID
John Apple f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
John Orange f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
John Grapes f6172268-78b7-4c2b-8cd7-7a5ca20f6a01
Peter Canteloupe e3b1851c-1927-491a-803e-6b3bce9bf223
Peter Grapefruit e3b1851c-1927-491a-803e-6b3bce9bf223
¿Puedo hacer eso en una instrucción de actualización sin tener que utilizar un cursor? Si es así, ¿puedes dar un ejemplo?
Gracias chicos ...
"CTE no funcionará porque evaluará por fila": lo mismo se aplica a otras expresiones de tabla, p. la cláusula 'USING' en una declaración' MERGE'. Usar 'MERGE' con una variable de tabla en lugar de una expresión de tabla funcionará, por supuesto. – onedaywhen
Gracias por agregar ese enlace. Había oído hablar del tema, pero no me había dado cuenta de que habían decidido cerrar esto como 'no arreglarán'. La semántica me parece incorrecta (ciertamente no es lo que esperaba). – GilM
Gracias Matt, trabajó como un campeón. – Ryan