Ho appena realizzato di aver acquisito dati errati per una colonna nella mia tabella. Ho risolto il problema, tuttavia, i dati che ho catturato finora non sono corretti. NomeCome aggiornare i dati di una colonna utilizzando altri dati di tabelle TSQL
di lasciare che i miei tavoli TableIWantToCorrect
e TableWithIDs
In TableIWantToCorrect
, ho una chiave esterna per TableWithIDs
. Questo è ciò che è sbagliato.
Sono in grado di correggere i dati confrontando la sottostringa di una colonna in TableIWantToCorrect
con una colonna in TableWithIDs
.
Così Attualmente, ho
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
quindi voglio aggiornare TableIWantToCorrect
per avere il valore ForeignKey corretto quando la sotto stringa nella Il nome è uguale alla sottostringa in Confronta nome. La posizione della sottostringa è sempre la stessa, quindi è possibile utilizzare il metodo Substring
.
Il mio tentativo:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
Il risultato:
subquery ha restituito più 1 valore. Ciò non è consentito quando la sottoquery segue =,! =, <, < =,>,> = o quando la sottoquery viene utilizzata come un'espressione. La dichiarazione è stata chiusa.
So di aver fatto qualcosa di sciocco. Cosa ho fatto in modo errato qui?
tuo inline-query sta tornando più di una riga da qui il problema. Eseguire questa query per capire quali stanno ripetendo 'SELEZIONA CompareName, COUNT (1) \t DA TableWithIDs GROUP BY CompareName HAVING COUNT (1)> 1 \t ' – Chandu
Non è ancora ottenere l'errore se si modifica la sottoquery per usa 'SELECT DISTINCT id'? Se è così ci sono più possibili corrispondenze ed è ambiguo quale usare. –
possibile duplicato di [UPDATE da SELECT usando SQL Server] (http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) –