Tôi có một bảng 'câu trả lời' với cột số nguyên 'problem_id' được lập chỉ mục, cột số nguyên 'times_chosen' và cột 'tùy chọn' là một varchar. Hiện tại, các giá trị duy nhất cho cột 'tùy chọn' là 'A', 'B', 'C' và 'D', mặc dù những giá trị này có thể mở rộng sau này. Tôi muốn tăng thêm một giá trị 'times_chosen' của nhiều câu trả lời (50-100), khi tôi biết problem_id và tùy chọn của từng câu hỏi.Thực hiện WHERE IN trên nhiều cột trong Postgresql
Vì vậy, tôi cần một truy vấn mà là một cái gì đó như:
UPDATE answers
SET times_chosen = times_chosen + 1
WHERE (problem_id, option) IN ((4509, 'B'), (622, 'C'), (1066, 'D'), (4059, 'A'), (4740, 'A')...)
Đây có phải là có thể?
Nó nên, ít nhất tôi nghĩ rằng nó sẽ trong MySQL và MSSQL. Bạn đã thử chưa? Bạn có thể kiểm tra nó bằng 'SET times_chosen = times_chosen' – Dirk
Oh wow, nó thực sự hoạt động, giống như tôi đã viết nó! Nó thậm chí còn sử dụng chỉ mục! Cảm ơn Dirk - nếu bạn chỉ cần sao chép câu trả lời của bạn dưới đây như là một câu trả lời tôi sẽ rất vui khi chấp nhận nó. – PreciousBodilyFluids
heh, tôi không biết đó là cú pháp hợp lệ. Đó là tiện dụng = D –