Frage zu UPDATE

Hallo zusammen

Ich habe eine Tabelle, die wie folgt aussieht (Auszug):

ID Sold
123 false
124 false
125 false
126 true
127 true
...

Ich möchte nun mit einem UPDATE-Befehl nur eines der Felder die auf „false“ stehen auf „true“ setzten. Mir ist egal welches, ich kenne die ID nicht mal … einfach das erste „freie“ …

Wie kann ich das lösen?

Danke und Gruss
Martin

ID Sold
123 false
124 false
125 false
126 true
127 true

Ich möchte nun mit einem UPDATE-Befehl nur eines der Felder
die auf „false“ stehen auf „true“ setzten. Mir ist egal
welches, ich kenne die ID nicht mal … einfach das erste
„freie“ …

eine möglichkeit wäre:

update [tabellenname] set sold=true where id=(select min(id) from [tabellenname] where sold=false order by id asc)

gruss co

Hallo

Danke für Deine Antwort. Es funktioniert bestens. Bloss mit dem „ORDER“ gibt es ein Problem. Es heisst ich müsse dafür „TOP“ verwenden.

Kannst Du mir damit nochmals helfen?

Danke und Gruss
Martin

Hallo Martin,

es müsste eigentlich auch ohne die ‚ORDER‘-Clause gehen.
Ich wollte damit nur sichergehen das die ‚erste‘ freie
Zeile genutzt wird. Dies wird aber schon durch die MIN() Bedingung erfüllt.
Versuche sie mal wegzulassen.
also:

update [tabellenname] set sold=true where id=(select min(id) from [tabellenname] where sold=false)

Übrigens: welche Datenbank setzt du ein?

Gruss CO

Hallo Co

es müsste eigentlich auch ohne die ‚ORDER‘-Clause gehen.

Es geht auch ohne ORDER :smile: … dachte nur, dass es vielleicht sicherer mit ist.

Übrigens: welche Datenbank setzt du ein?

MS-SQL 7.0. Habe die UPDATE-Anweisung in einer Stored-Procedure eingebaut, welche ich dann aus VB aufrufe.

Gruss
Martin