Acabo de darme cuenta de que he estado capturando los datos incorrectos para una columna en mi tabla. He resuelto el problema, sin embargo, los datos que he capturado hasta ahora siguen siendo incorrectos. NombreCómo actualizar datos de una columna usando otra tabla de datos TSQL
de dejar que mis tablas TableIWantToCorrect
y TableWithIDs
En TableIWantToCorrect
, tengo una clave externa a TableWithIDs
. Esto es lo que es incorrecto
Puedo corregir los datos comparando la subcadena de una columna en TableIWantToCorrect
con una columna en TableWithIDs
.
Así Actualmente, tengo
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
Así que quieren actualizar TableIWantToCorrect
tener el valor ForeignKey correcta cuando la subcadena en el El nombre es igual a la subcadena en Comparar nombre. La posición de la subcadena es siempre la misma, así que puedo usar el método Substring
.
Mi intento:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
El resultado:
subconsulta devuelve más de 1 valor. Esto no está permitido cuando la subconsulta sigue =,! =, <, < =,>,> = o cuando la subconsulta se usa como una expresión. La instrucción se ha terminado.
Sé que he hecho algo tonto. ¿Qué he hecho incorrectamente aquí?
Su línea-consulta está volviendo más que una fila de ahí el tema. Ejecutar esta consulta para averiguar cuáles están repitiendo SELECT CompareName, COUNT (1) \t DE TableWithIDs GROUP BY CompareName TIENE CUENTA (1)> 1 \t ' – Chandu
¿Todavía consigo el error si cambia la subconsulta para usar 'SELECT DISTINCT id'? Si es así, hay múltiples coincidencias posibles y es ambiguo cuál usar. –
posible duplicado de [ACTUALIZACIÓN de SELECT usando SQL Server] (http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) –