Tôi vừa mới nhận ra rằng tôi đã thu thập dữ liệu sai cho một cột trong bảng của mình. Tôi đã khắc phục vấn đề, tuy nhiên, dữ liệu tôi đã chụp cho đến nay vẫn không chính xác.Làm thế nào để cập nhật dữ liệu một cột bằng cách sử dụng dữ liệu bảng khác TSQL
Hãy tên bảng của tôi TableIWantToCorrect
và TableWithIDs
Trong TableIWantToCorrect
, tôi có một chính nước ngoài để TableWithIDs
. Đây là những gì không chính xác.
Tôi có thể sửa dữ liệu bằng cách so sánh chuỗi con của cột trong TableIWantToCorrect
với cột ở TableWithIDs
.
Vì vậy, hiện nay, tôi có
TableIWantToCorrect
Name ForeignKey
123-abc-123 15
456-def-456 15
789-ghi-789 15
TableWithIDs
CompareName id
abc 1
def 2
ghi 3
Vì vậy, tôi muốn cập nhật TableIWantToCorrect
có giá trị ForeignKey đúng khi chuỗi con trong Tên bằng chuỗi con trong So sánh tên. Vị trí của chuỗi con luôn giống nhau vì vậy tôi có thể sử dụng phương thức Substring
.
nỗ lực của tôi:
Update TableIWantToCorrect
SET ForeignKey =
(SELECT id
FROM TableWithIDs
WHERE UPPER(CompareName) = UPPER((SUBSTRING(TableIWantToCorrect.Name, 4, 3)))
Kết quả:
Subquery trở lại hơn 1 giá trị. Điều này không được phép khi truy vấn con theo sau =,! =, <, < =,>,> = hoặc khi truy vấn con được sử dụng làm một biểu thức. Các tuyên bố này đã bị chấm dứt.
Tôi biết tôi đã làm điều gì đó ngớ ngẩn. Tôi đã làm gì sai ở đây?
bạn inline-truy vấn của bạn đang trở lại hơn là một hàng do đó vấn đề này. Chạy truy vấn này để tìm ra những người được lặp đi lặp lại 'CHỌN CompareName, COUNT (1) \t TỪ TableWithIDs GROUP BY CompareName HAVING COUNT (1)> 1 \t ' – Chandu
Bạn vẫn nhận được lỗi nếu bạn thay đổi subquery để sử dụng 'CHỌN DISTINCT id'? Nếu có nhiều kết quả phù hợp và nó không rõ ràng để sử dụng. –
bản sao có thể có của [UPDATE from SELECT using SQL Server] (http://stackoverflow.com/questions/2334712/update-from-select-using-sql-server) –