84 messaggi dal 15 settembre 2005
Ciao a tutti, io ho una tabella utenti dove all'interno posso avere lo stesso utente più volte registrato e quindi con la stessa mail ripetuta....attraverso la query che riporto qui sotto vorrei cancellare dalla tabella tutti gli utenti con la stessa mail tenendone solamente una....questa queryt funziona ma solo per il primo record....

delete from t_ute_utenti
where
utente_email1 not in (SELECT TOP 1 utente_email1 FROM t_ute_utenti)
AND
utente_id not in (SELECT TOP 1 utente_id FROM t_ute_utenti)
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
il problema che riscontri e' "ovvio" visto l'errato utilizzo che hai fatto per l'estrazione dei duplicati..
ti conviene ottenere un "raggruppamento" per la colonna duplicata e, visto che hai una colonna [Id] utilizzare questa come discriminante per mantenere (ad esempio) il minore di questi id per ogni duplicato..
tipicamente

SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.TestTB (
Id int NOT NULL IDENTITY,
Utente varchar(10)
);
INSERT INTO dbo.TestTB VALUES ('a');
INSERT INTO dbo.TestTB VALUES ('b');
INSERT INTO dbo.TestTB VALUES ('c');
INSERT INTO dbo.TestTB VALUES ('a');
INSERT INTO dbo.TestTB VALUES ('c');
INSERT INTO dbo.TestTB VALUES ('d');
INSERT INTO dbo.TestTB VALUES ('e');
INSERT INTO dbo.TestTB VALUES ('f');
INSERT INTO dbo.TestTB VALUES ('g');
INSERT INTO dbo.TestTB VALUES ('a');
INSERT INTO dbo.TestTB VALUES ('g');
INSERT INTO dbo.TestTB VALUES ('g');
GO
SELECT * FROM dbo.TestTB;

DELETE FROM dbo.TestTB
WHERE Id NOT IN (
SELECT MIN(Id)
FROM dbo.TestTB
GROUP BY Utente);

SELECT * FROM dbo.TestTB;
GO
DROP TABLE dbo.TestTB;
--<------
Id Utente
----------- ----------
1 a
2 b
3 c
4 a
5 c
6 d
7 e
8 f
9 g
10 a
11 g
12 g

Id Utente
----------- ----------
1 a
2 b
3 c
6 d
7 e
8 f
9 g


saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.