[relug] Re: entry doppie in mysql

  • From: "Alberto Basso" <info@xxxxxxxxxxxx>
  • To: <relug@xxxxxxxxxxxxx>
  • Date: Wed, 12 Nov 2003 13:49:16 +0100 (CET)

>> ...la tabella di destinazione viene creata con la suddetta query in
>> automatico o la devo creare prima con tutti i campi???
> Dipende dal dbms. Sinceramente non ho mai usato mysql, quindi devi
> vedere la documentazione (o chiedi ad Alb. Basso ;) ).

ecchime!

no, la tab. deve esistere. Per il resto ti consigio di indagare sulla
struttura della tabella, perchè contiene righe duplicate? Se pensi che non
debba esistere un record doppio all'interno di una colonna devi attribuire
a questa colonna la proprietà 'Unique', in questo modo anche se tenti di
effettuare una INSERT di una riga che esiste già il DB ti manda a quel
paese.

Con questo comando crei una tabella di nome 'prova' e con il campo 'url'
che è la chiave primaria della tabella, campo univoco e mai vuoto (not
null):

CREATE TABLE `prova` (`url` VARCHAR (255) DEFAULT '0' NOT NULL, PRIMARY
KEY(`url`), UNIQUE(`url`), INDEX(`url`))

Se vuoi operare su una tab. esistente devi utilizzare un comando tipo questo:

ALTER TABLE `prova` ADD `url` VARCHAR(255)  NOT NULL
ALTER TABLE `prova` ADD PRIMARY KEY (url)

(il primo aggiunge la colonna 'url', il secondo associa a questa colonna
la chiave primaria)


Per ricreare una tabella contenente i dati corretti provenienti da una
tabella con righe doppie ti consiglio di:

1. Salvare su file l'output della query con la clausola DISTINCT
sulla tab. errata. (prova anche ad usare mysqldump)
2. Ricreare la nuova tabella strutturata in modo corretto.
3. Ricaricare i dati su questa tabella dal file generato precedentemente.


Se non ci salti fuori dimmi esattamente cosa deve fare la tabella nuova
(campi, proprietà, ecc...) che ti invio tutti i comandi sql che ti servono
per crearla.

bye bye,

alb.





Other related posts: