2012-12-07 14 views
6

Używam tego zaktualizować (dodawanie punktów) wiersze, które mgroup jest 15aktualizacji SQL wiele wierszy o tej samej wartości

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

Co mogę użyć do aktualizacji (dodawanie punktów + 500) dla wierszy, które ma swój id jako 5, 7, 10, 11, 16, 25i ma równieżmgroup jako 15?

Odpowiedz

14

Możesz użyć do tego celu klauzuli IN, która jest łatwiejsza do odczytania (i prawdopodobnie bardziej wydajna?) Niż budowa gigantycznej listy OR. Spróbuj czegoś takiego:

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

nie ma żadnej różnicy w wydajności (z wyjątkiem mniejszej liczby bajtów w przekazaniu zapytania) –

+0

@ypercube - I” Wezmę na to twoje słowo, nie znam planisty zapytań mySql. –

+3

Link do dokumentacji MySQL: [Primary Optimizations] (http://dev.mysql.com/doc/internals/en/optimizer-primary -optimizations.html). Wyszukaj * ", a MySQL traktuje je tak samo - nie ma potrzeby zmiany IN na OR dla zapytania lub odwrotnie." * –

1

Wystarczy dodać kolejny warunek do klauzuli WHERE:

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