2012-12-07 44 views
6

Tôi sử dụng này để cập nhật (thêm điểm) hàng mà mgroup15cập nhật SQL nhiều hàng với cùng một giá trị

UPDATE ibf_members SET points = points + 500 WHERE mgroup = 15 

Những gì tôi có thể sử dụng để cập nhật (thêm điểm + 500) cho các hàng trong đó có id của nó như là 5, 7, 10, 11, 16, 25và cũng cómgroup như 15?

Trả lời

14

Bạn có thể sử dụng mệnh đề IN cho điều này, dễ đọc hơn (và có thể hiệu quả hơn?) So với việc tạo danh sách OR khổng lồ. Hãy thử một cái gì đó như:

UPDATE ibf_members 
SET points = points + 500 
WHERE mgroup = 15 
AND id IN (5, 7, 10, 11, 16, 25); 
+0

Không có sự khác biệt về hiệu quả (trừ các byte ít trong truyền của truy vấn) –

+0

@ypercube - Tôi ll lấy từ của bạn cho nó, tôi không biết kế hoạch truy vấn mySql ở tất cả .. –

+3

Liên kết đến tài liệu MySQL: [Tối ưu hóa chính] (http://dev.mysql.com/doc/internals/en/optimizer-primary -optimizations.html). Tìm kiếm * "và MySQL xử lý chúng giống nhau - không cần thay đổi IN thành OR cho truy vấn hoặc ngược lại." * –

1

Chỉ cần thêm điều kiện khác để mệnh đề WHERE của bạn:

UPDATE ibf_members SET points = points + 500 WHERE mgroup = 15 AND id IN (5, 7, 10, 11, 16, 25) 
Các vấn đề liên quan