2013-02-22 24 views
5

ここに私のFIDDLEがあります。新しいテーブルを作成中に別のテーブルから値を挿入する

古いテーブルから新しいテーブルにデータをインポートしようとしています。古いテーブルには繰り返しは何もありません。新しいテーブルでは、DISTINCTメールのみを挿入できます。私は同じ名前を挿入することができません。ここに私のコードです。

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); 

したがって、電子メール列名に関してtable_newに名前を挿入する方法を教えてください。

+0

名前を追加するだけですか? 'CREATE TABLE table_new AS(SELECT DISTINCT name、email FROM table_old); ' – Andomar

+0

これは、名前が異なっていても、それぞれのコピーが1つしかないと解釈します。 – Joe

+0

はいジョー。あなたが正しいです。冗長なコンテンツのコピーのみが必要です。そしてあなたが正しいのですが、私の問題を解決するためにtimがもっと速くなります。 –

答えて

1

私は、これはあなたが後にしているものだと思う:これのいくつかは、あなたが保たれている名前を選択する方法によって異なり

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

最初に、私はuser_idとauto incと主キーを持つテーブルを作成しました。後で私は上記のクエリをalter tableコマンドで試しています。私はエラーが発生しています。私はそうすることはできません。 –

1

どの名前が選択されたかを判断するためのより複雑なルールがある場合は、それを別々に実装する必要があります。

2

以下のクエリを使用できます。

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

関連する問題