2014-12-02 12 views
6

Tôi tìm thấy một vấn đề với các UPDATE tuyên bố sau trong SQL SERVER tôimáy chủ sql CẬP NHẬT kết hợp với INNER JOIN với chính nó

UPDATE 
    table_a 
SET 
    table_a.More = -1 
FROM 
    table_a 
INNER JOIN 
    (SELECT column1, COUNT(*) AS More 
     FROM table_a 
     GROUP BY column1) AS table_b 
ON 
    table_a.column1 = table_b.column1 

Lưu ý rằng INNER JOIN phần sử dụng bảng riêng của mình. Sau UPDATE Tôi mong đợi một số hàng có More tương đương với -1. Nhưng tôi chỉ nhận được 1 s. Tôi chắc chắn rằngcó bản sao. Tôi đang thiếu gì?

Vấn đề tôi phát hiện ra là một số người đã xác định cột More là loại bit!

+1

vui lòng cung cấp đầu vào mẫu của bạn –

+8

Vâng, tôi đã tìm thấy sự cố. 'More' được định nghĩa là' bit' bởi một số S * @ #! # A @ # $ @ và lãng phí 3 trong số những giờ quý giá của tôi! –

+7

Xin chào John, bạn có thể trả lời câu hỏi của riêng mình và cung cấp chi tiết về cách bạn giải quyết vấn đề này không, nó có thể giúp người khác bị mắc kẹt với vấn đề này. –

Trả lời

1

Tôi vấn đề ở đây là loại dữ liệu, trong một loại bit bạn chỉ có thể có 1 hoặc 0 hoặc NULL. Thay đổi loại dữ liệu thành int

Các vấn đề liên quan