Tôi muốn tính tổng kiểm tra tất cả các giá trị của một cột tổng hợp.Tạo tổng kiểm tra tổng hợp của một cột
Nói cách khác, tôi muốn làm một số tương đương với
md5(group_concat(some_column))
Vấn đề với phương pháp này là:
- Đó là không hiệu quả. Nó phải concat tất cả các giá trị của cột như một chuỗi trong một số lưu trữ tạm thời trước khi chuyển nó vào hàm md5
- group_concat có độ dài tối đa 1024, sau đó mọi thứ khác sẽ bị cắt bớt.
(Trong trường hợp bạn đang tự hỏi, bạn có thể đảm bảo rằng các concat của các giá trị là theo một thứ tự nhất quán, tuy nhiên, như có tin hay không group_concat() chấp nhận một trật tự quy định tại khoản bên trong nó, ví dụ như group_concat(some_column order by some_column)
)
MySQL cung cấp các hàm tổng hợp bit không chuẩn BIT_AND(), BIT_OR() và BIT_XOR() mà tôi cho là sẽ hữu ích cho vấn đề này. Cột này là số trong trường hợp này nhưng tôi sẽ quan tâm để biết nếu có một cách để làm điều đó với các cột chuỗi.
Đối với ứng dụng cụ thể này, tổng kiểm tra không cần phải an toàn về mặt mật mã.
'SUM()' Không phải là điều đúng để sử dụng ở đây, vì hai tổng kiểm tra khác nhau có thể tính tổng giá trị khá dễ dàng –
Làm thế nào để tránh tràn số với phương pháp này? – Robert