Masamda bir sütun için yanlış verileri yakaladığımı fark ettim. Sorunu çözdüm, ancak şu ana kadar yakaladığım veriler hatalı.Başka bir tablo verisini kullanarak bir sütun verileri nasıl güncellenir TSQL
Let ismi benim tabloları TableIWantToCorrect
yılında TableIWantToCorrect
ve TableWithIDs
, ben TableWithIDs
için yabancı bir anahtara sahip. Bu yanlış olan şey.
TableIWantToCorrect
numaralı sütunda bir sütunun alt dizesini TableWithIDs
numaralı sütunda karşılaştırarak verileri düzeltebiliyorum.
Yani şu anda, ben
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
yüzden doğru ForeignKey değere sahip TableIWantToCorrect
güncelleştirmek istediğiniz varken de alt dize Ad, alt dizeye eşittir Adı karşılaştır. Alt dizenin konumu her zaman aynıdır, böylece Substring
yöntemini kullanabilirim.
girişimim:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
sonucu:
Alt sorgu 1'den fazla değer döndürdü. alt sorgusu =,! =, <, < =,>,> = veya alt sorgu bir ifade olarak olarak kullanıldığında bu izin verilmez. Açıklama feshedildi.
Aptalca bir şey yaptığımı biliyorum. Burada yanlış ne yaptım? sizin alt sorgu UPDATE
için birden fazla kayıt döndürmesi nedeniyle
Sizin inline-sorgu ile bir
JOIN
kullanarak bunu yapabilirsiniz. olanları tekrar hangi anlamaya bu sorguyu çalıştırın 'CompareName TARAFINDAN CompareName, COUNT (1) TableWithIDs GELEN \t GRUBU SEÇ size alt sorgu değiştirirseniz COUNT (1)> 1 \t ' – Chanduhata almaya devam mı HAVING SELECT DISTINCT kimliğini kullan? Eğer varsa, olası birden fazla eşleşme vardır ve hangisinin kullanılacağı belirsizdir. –
[SQL Server kullanarak SELECT'ten GÜNCELLEŞTİRME] 'nin olası bir kopyası (http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) –