# SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl?



## Jens81 (3. Dez 2009)

Guten morgen und hallo zusammen,

aus einer Java Anwendung heraus werden SQL Statements versendet, um eine Tabelle zu aktualisieren. Die Abfragen lauten:

UPDATE test SET Rank = 1 WHERE wert_p >=0 AND wert_p <= 0.05
UPDATE test SET Rank = 2 WHERE wert_p > 0.05 AND wert_p <= 0.123
UPDATE test SET Rank = 3 WHERE wert_p > 0.123 AND wert_p <= 0.2
...

Meine Frage: Kann man diese Statements zusammenlegen, so dass nur noch ein Statement benötigt wird? Ich weiß, es ist eher eine SQL Frage... 

Gruß,
Jens


----------



## bronks (3. Dez 2009)

Kann man! Natürlich je nach Datenbank, aber mit den bedeutenden DBMS geht es. Um was genaueres zu sagen müßte man wissen, was für eine Motivation dahinter steht und wieviele Statements in "..." enthalten sind.


----------



## Empire Phoenix (3. Dez 2009)

Kann man nicht bei den meisten datenbanken die querys einfach mit ; aneinanderreihen? Oder verstehe ich einfach nur die Frage falsch?


----------



## Jens81 (3. Dez 2009)

Ich wollte gerne testen, ob es eine Abfrage gibt, die schneller ist als mehrere einzelne Abfragen. Das Hintereinanderhängen bringt da vermutlich nicht wirklich was.


----------



## Jens81 (3. Dez 2009)

bronks hat gesagt.:


> Kann man! Natürlich je nach Datenbank, aber mit den bedeutenden DBMS geht es. Um was genaueres zu sagen müßte man wissen, was für eine Motivation dahinter steht und wieviele Statements in "..." enthalten sind.



Es gibt Rank 1-5, die p_werte kann der Benutzer eingeben.


----------



## bronks (3. Dez 2009)

Schneller kann man das eigentlich nicht machen. Einfach die 5 Updates abfeuern. Das Feld p_wert muß indiziert sein, da es sonst je nach Daten dauern kann.


----------



## Jens81 (3. Dez 2009)

Bisher sind sie nicht indiziert, aber da es zwischen 1,3 und 3,5 Millionen Datensätze sind, könnte es sich ja lohnen  Ich werd's testen.

Vielen Dank


----------



## bronks (3. Dez 2009)

Jens81 hat gesagt.:


> Bisher sind sie nicht indiziert, aber da es zwischen 1,3 und 3,5 Millionen Datensätze sind, könnte es sich ja lohnen  Ich werd's testen. Vielen Dank


Ich kann Dir schon jetzt versprechen, daß der ganze Spaß nach der Indizierung mindestens 4x schneller laufen wird.


----------

