Spalten von einer Tabelle in neue kopieren

kesnw

Erfahrenes Mitglied
Hi,

ich muss meine bisherige Tabelle leider splitten und muss manche Datensätze in meine neue Tabelle übernehmen.

Meine bisherige Tabelle A besitzt die Spalten A1 und A2. Diese beiden Spalten möchte ich komplett (natürlich mit Inhalt) in meine neue Tabelle B mit den Spaltennamen B1 und B2 kopieren.

Wie mache ich das?
 
Hallo!

Schau mal hier:

Code:
mysql> select * from tab1;
+------+------+
| a1   | a2   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
|    4 |    4 |
|    5 |    5 |
|    6 |    6 |
|    8 |    8 |
|    9 |    9 |
+------+------+
8 rows in set (0.00 sec)

mysql> create table tab2 as select a1 "B1", a2 "B2" from tab1;
Query OK, 8 rows affected (0.05 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> select * from tab2;
+------+------+
| B1   | B2   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
|    4 |    4 |
|    5 |    5 |
|    6 |    6 |
|    8 |    8 |
|    9 |    9 |
+------+------+
8 rows in set (0.00 sec)

Gruß Tom
 
klasse, danke, das ist schonmal nicht schlecht.

Was ist nun aber wenn die Tabelle und die Spalten schon vorhanden sind? Kannst du mir da bitte noch helfen? Die Daten können dabei keinesfalls verloren gehen oder soll ich vorher sichern?
 
Hallo!

Schau mal hier:

Code:
mysql> select * from tab3;
+------+------+
| c1   | c2   |
+------+------+
|   10 |   10 |
|   11 |   11 |
|   12 |   12 |
|   13 |   13 |
|   14 |   14 |
+------+------+
5 rows in set (0.00 sec)

mysql> select * from tab2;
+------+------+
| B1   | B2   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
|    4 |    4 |
|    5 |    5 |
|    6 |    6 |
|    8 |    8 |
|    9 |    9 |
+------+------+
8 rows in set (0.03 sec)

mysql> insert into tab2 select c1 "B1", c2 "B2" from tab3;
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from tab2;
+------+------+
| B1   | B2   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
|    4 |    4 |
|    5 |    5 |
|    6 |    6 |
|    8 |    8 |
|    9 |    9 |
|   10 |   10 |
|   11 |   11 |
|   12 |   12 |
|   13 |   13 |
|   14 |   14 |
+------+------+
13 rows in set (0.00 sec)

Gruß Tom
 
super, das wird hinhauen.

du scheinst dich ja gut auszukennen, hab noch folgendes problem. ich habe zwei spalten A und B, die ZUSAMMEN als key agieren sollen. A kann also mehrmals vorkommen und B ebenfalls, nur zusammen können die Werte nur einmal vorkommen. Wie lege ich das an

Danke schonmal für die Unterstützung
 
Hallo!

Siehe:

Code:
mysql> CREATE TABLE tab4(
    -> a INT NOT NULL,
    -> b INT NOT NULL,
    -> PRIMARY KEY (a,b));

mysql> insert into tab4 values (1,1);
Query OK, 1 row affected (0.03 sec)

mysql> insert into tab4 values (2,1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into tab4 values (1,1);
ERROR 1062: Duplicate entry '1-1' for key 1

mysql> insert into tab4 values (1,2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into tab4 values (1,2);
ERROR 1062: Duplicate entry '1-2' for key 1

Gruß Tom
 
Sorry, doch noch ein Problem.

Folgende Fehlermeldung:
Column count doesn't match value count at row 1

Mein PHP-Script lautet:
PHP:
$update="insert into points select L_ID 'L_ID', owner 'owner', einschaetzung 'einschaetzung', point_1 'point_1', point_2 'point_2', point_3 'point_3', point_4 'point_4', kennzahlen 'kennzahlen', kenn_1 'kenn_1', risiko 'risiko', risk_1 'risk_1', risk_2 'risk_2', risk_3 'risk_3', risk_4 'risk_4', risk_5 'risk_5' from vendors";
mysql_query($update) or die ("Error in query: $update. " . mysql_error());

Die Tabelle vendors hat viel mehr Spalten, ich möchte aber nur diese kopieren...
 

Neue Beiträge

Zurück