Duplicati

Salve a tutti,

come va? come si cancellano i duplicati in una tabella?

ad Es:

id   idlanguage

9   1

9   1

124   2

124   2

124   2

150   2

150   2

Grazie

inviato 10 anni fa
ulisse
X 0 X

ti conviene creare una nuova tabella, identica alla prima. Estrarre con una SELECT DISTINCT tutte le righe della prima ed inserirle nella seconda tabella. Cancella poi la prima e rinomina la seconda con il nome della prima.

L'operazione di copia dell righe può essere fatta con un unica query:

INSERT INTO nome_tabella .... SLECT DISTINCT .....

http://dev.mysql.com/doc/refman/4.1/en/insert-select.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni,

ho cercato di fare ciò che mi hai detto ma non mi riesco a capire come realizzare la Select.

Se creo una select distinct devo dare il nome del campo che voglio "Distinguere" ad esempio "ID". L'insert non riporterà alcun altro dato che la lista degli ID e non la lista distinta composta da tutti i campi.

Grazie

risposto 10 anni fa
ulisse
X 0 X

dopo la clausola DISTINCT devi indicare tutti i campi che andranno copiati nell'altra tabella.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

facendo così non risolvo il problema perchè il DISTINCT racchiuderà anche gli altri campi aumentando il filtro.

Grazie  :bye:

risposto 10 anni fa
ulisse
X 0 X

Non ho ben capito.... descrivimi la struttura della tabella e quali doppioni vuoi eliminare.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La mia tabella è creata dai seguenti campi:

CREATE TABLE `options` (

  `idoptions` int(11) NOT NULL auto_increment,

  `iduser` int(11) default '0',

  `updated` datetime default NULL,

  `idlang` int(11) default '0',

  `ip` char(50) default NULL,

  PRIMARY KEY  (`idoptions`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 5120 kB; InnoDB free: 5120 kB; InnoDB free: 512'

voglio eliminare tutti i doppioni che si trovano nel campo iduser.

Grazie

 :bye:

risposto 10 anni fa
ulisse
X 0 X

potresti fare uno script PHP che estrae tutte le righe della tabella, facendo in modo di prelevare solo una riga per iduser, e poi le inserisce nella tabella gemella.

Per prendere solo una riga per utente poi procedere in questo modo:

while (.......

{

$tmp = mysql_fetch_assoc($result);

$righe[$tmp['iduser']] = $tmp;

}

e poi per inserirle:

foreach ($righe as $riga)

{

mysql_query("INSER INTO gemella SET idoption = $riga[doption], iduser = $riga[iduser] ....

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda