Einträge mit doppeltem Inhalt finden und updaten

andaluzo

Neuer Benutzer
Beiträge
3
Hallo,

ich würde gerne folgendes tun, in einer Tabelle mit
mail,nid,id,active

habe ich verschiedene Einträge die den gleichen Werte bei Mail enthalten, jedoch verschieden bei nid und active sind.

Nun möchte ich alle die bei mail gleich sind und bei denen nid=1 ist active =0 setzen.

Vielen Dank für eine Hilfestellung.
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Hallo,

ich würde gerne folgendes tun, in einer Tabelle mit
mail,nid,id,active

habe ich verschiedene Einträge die den gleichen Werte bei Mail enthalten, jedoch verschieden bei nid und active sind.

Nun möchte ich alle die bei mail gleich sind und bei denen nid=1 ist active =0 setzen.

Vielen Dank für eine Hilfestellung.

Was ist der Primary Key?
 

akretschmer

Datenbank-Guru
Beiträge
9.423
Was ist der Primary Key?

Vielleicht reicht Dir schon das:

Code:
test=# select * from andaluzo ;
mail | nid | id | active
------+-----+----+--------
ich  |  1 |  1 | f
ich  |  1 |  1 | t
du  |  1 |  1 | f
er  |  1 |  1 | t
(4 rows)
 
Time: 0,178 ms
test=*# update andaluzo set active = false where mail in (select mail from andaluzo group by mail having count(*) > 1);
UPDATE 2
Time: 0,410 ms
test=*# select * from andaluzo ;
mail | nid | id | active
------+-----+----+--------
du  |  1 |  1 | f
er  |  1 |  1 | t
ich  |  1 |  1 | f
ich  |  1 |  1 | f
(4 rows)


Edit: noch im WHERE nid=1 einbauen...

Andreas
 

andaluzo

Neuer Benutzer
Beiträge
3
Ich bekomme da eine Fehlermeldung
Code:
#1093 - You can't specify target table 'wp_2_wpr_subscribers' for update in FROM clause

die Abfrage lautete

Code:
UPDATE
 
wp_2_wpr_subscribers
 
SET active='0'
 
WHERE
 
mail in (SELECT mail from wp_2_wpr_subscribers group by mail having count(*) > 1);
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.423
Ich bekomme da eine Fehlermeldung
Code:
#1093 - You can't specify target table 'wp_2_wpr_subscribers' for update in FROM clause

Ach ja, stimmt, das kann MySQL nicht, ich verwende ja PostgreSQL. Notfalls mußt halt erst mal das SELECT machen und daraus dann in PHP oder wo auch immer Du programmierst das Update zusammenfrickeln.
 
Oben