SQL Update Select

heinz7263

Neuer Benutzer
Beiträge
1
Hallo, ich möchte einen Update-Befehl erstellen, der eine StatusID setzt, also in etwa so: UPDATE table1 SET STATUSID = 4 WHERE

Hinter das Where würde ich nun gerne ein Select-Befehl setzen. Über diesen Select Befehl erhalte ich alle Datensätze, bei denen die StatusID auf 4 gesetzt werden soll. Wie kombiniere ich das?

select f.formtype,f.formuser,f.formstatusid
from table2 v, table1 f
where v.statusid ="1"
and v.date like"2010-06-17 15:40%"
and f.formtype ="4"
and f.formid = v.formid
 
Werbung:
Was ist denn Dein Ansatz?

Mal so als Idee...

Code:
test=# create table foo (id int primary key, status int default 0);
CREATE TABLE   
test=*# insert into foo select * from generate_Series(1,10) s;
INSERT 0 10   
test=*# create table bar(id int references foo, val numeric default random());
CREATE TABLE   
test=*# insert into bar (id) select * from generate_series(1,10) s;
INSERT 0 10   
test=*# select * from foo;   
 id | status   
----+--------
  1 |  0
  2 |  0
  3 |  0
  4 |  0
  5 |  0
  6 |  0
  7 |  0
  8 |  0
  9 |  0
 10 |  0
(10 rows)

test=*# select * from bar;
 id |  val
----+--------------------
  1 |  0.250136776827276
  2 |  0.96370570641011
  3 |  0.82207860937342
  4 |  0.978553278837353
  5 |  0.845835954416543
  6 |  0.332892938051373
  7 |  0.146631310228258
  8 |  0.154744449071586
  9 |  0.115069905761629
 10 | 0.0964399455115199
(10 rows)

test=*# update foo set status = 1 where id in (select id from bar where val > 0.5);
UPDATE 4
test=*# select * from foo;
 id | status
----+--------
  1 |  0
  6 |  0
  7 |  0
  8 |  0
  9 |  0
 10 |  0
  2 |  1
  3 |  1
  4 |  1
  5 |  1
(10 rows)

Hilft das?
 
Werbung:
Unter MSSQL könnte man das in etwa so machen:
Code:
UPDATE   table1
SET     table1.formtype = v.formtype,
     table1.formuser = v.formuser,
     table1.formstatusid = v.formstatusid
FROM   table1
INNER JOIN table2 v
ON     table1.formid = v.formid
WHERE   v.statusid ="1"
AND     v.date LIKE "2010-06-17 15:40%"
AND     table1.formtype ="4"
AND     table1.formid = v.formid
Aber ich glaube das kann MySQL nicht.
 
Zurück
Oben