2013-02-22 12 views
5

Ecco il mio FIDDLE.Inserimento dei valori da un'altra tabella durante la creazione della nuova tabella

Sto cercando di importare i dati dalla vecchia tabella alla nuova tabella. Nel vecchio tavolo ci sono molte no di ripetizioni. Nella nuova tabella sono in grado di inserire solo email DISTINCT. Non riesco a inserire il nome come uguale. Ecco il mio codice.

CREATE TABLE table_old(name VARCHAR(255), email VARCHAR(255)); 

INSERT INTO table_old (name, email) VALUES ('tom', '[email protected]'), 
              ('peter', '[email protected]'), 
              ('hitler', '[email protected]'), 
              ('haasan', '[email protected]'), 
              ('arun', '[email protected]'), 
              ('tom', '[email protected]'), 
              ('peter', '[email protected]'), 
              ('hitler', '[email protected]'), 
              ('haasan', '[email protected]'), 
              ('arun', '[email protected]'); 

CREATE TABLE table_new AS (SELECT DISTINCT email FROM table_old); 

Quindi, per favore, mi dia un'idea di come inserire i nomi in table_new rispetto al nome della colonna di posta elettronica.

+0

Basta aggiungere il nome? 'CREATE TABLE table_new AS (SELECT DISTINCT name, email FROM table_old);' – Andomar

+0

L'interpreto come se volessi una sola copia di ciascuna anche se i nomi sono diversi. – Joe

+0

Sì Joe. Hai ragione. Ho bisogno solo di una copia del contenuto ridondante. E tim è più veloce per risolvere il mio problema anche se hai ragione. –

risposta

1

Credo che questo è ciò che stai dopo:

CREATE TABLE table_new AS (SELECT name, email FROM table_old GROUP BY name, email); 
+0

Per prima cosa ho creato la tabella con user_id con auto inc e chiave primaria. Più tardi sto provando la query sopra con comando alter table. Sto ricevendo errore non posso farlo? –

1

Alcune di queste dipende da come si desidera selezionare il nome che viene mantenuta. Potrebbe essere semplice come:

CREATE TABLE table_new AS (SELECT email, max(name) FROM table_old group by email); 

Se si dispone di regole più complesse per determinare quale nome viene scelto, che avrebbe bisogno di essere attuato in modo diverso.

2

È possibile utilizzare sotto query.

CREATE TABLE table_new AS (SELECT DISTINCT * FROM table_old);

Problemi correlati