2012-12-07 67 views
6

我用它來更新(加分)排它mgroup15SQL更新與相同值的多個行

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

我可以用更新的行(加分+ 500),它有它的id5710111625,也有mgroup15

回答

14

您可以使用IN子句來實現此目的,它比構建巨大的OR列表更容易閱讀(並且可能更高效?)。嘗試是這樣的:

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

有效率沒有區別(除了在查詢的傳輸更少的字節) –

+0

@ypercube - 我我將不知道mySql查詢計劃器.. –

+3

鏈接到MySQL文檔:[主優化](http://dev.mysql.com/doc/internals/en/optimizer-primary -optimizations.html)。搜索*「和MySQL將它們視爲相同 - 不需要將IN更改爲OR,反之亦然。」* –

1

只需添加另一個條件到您的WHERE子句:

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