tengo los siguientes datos:¿Cómo puedo actualizar una tabla con datos recuperados por un join en sí mismo?
SectorKey Sector foo
1 A null
2 B null
... ... ...
1 null a
2 null b
2 null c
1 null d
2 null e
... ... ...
Quiero actualizar Sector columna cuando se basa nulo en el valor de sectorKey, es decir, quiero sector sea 'A' cuando SectorKey es 1 y 'B' cuando SectorKey es de 2
he tratado de esta consulta:
update tbFoo
set Sector=A.sector
from tbFoo A INNER JOIN tbFoo B
ON A.SectorKey=B.SectorKey
and A.Sector is not null
and B.Sector is null
y tengo este mensaje de error:
La tabla 'tbFoo' es ambigua.
He intentado alias el primer tbFoo, pero no parece ser una sintaxis válida. No entiendo por qué SQLServer se queja de un nombramiento ambiguo ya que tengo todas mis tablas con alias.
He encontrado this thread, y siento que estoy haciendo exactamente lo mismo que en la respuesta aludida. También he probado la consulta se sugiere en la respuesta aceptada:
update tbFoo A
set Sector =
(select Sector from tbFoo
where A.SectorKey=SectorKey and Sector is not null)
y luego SQLServer queja por una sintaxis incorrecta cerca de 'A'
¿Alguna idea de lo que puede estar ocurriendo, y para solucionar esto? Estoy usando SQLServer 2008.
EDIT No he mostrado los datos totales de mi tabla. No tengo solo dos casos (A y B), sino algunos miles de casos. Lo que un caso explícita no es una opción
@ Joel. Exactamente lo que me estaba perdiendo. gracias :) – Brann
Parece que no puedo pasar la posición de su FROM, siempre arroja un error allí, ¿hay un modo mysql que no acepte un FROM después de un conjunto? – Gisheri
@Gisheri Estás usando MySql. Esta pregunta está etiquetada para Servidor SQL. La sintaxis para MySql y Sql Server son diferentes en esta área. MySql no sigue el estándar ansi aquí. –