/ / MySQL: Erstellen einer neuen Tabelle mit Informationen aus einer Abfrage - mysql, sql, insert, sql-update

MySQL: Erstellen einer neuen Tabelle mit Informationen aus einer Abfrage - mysql, sql, insert, sql-update

In MySQL möchte ich eine neue Tabelle mit allen Informationen in dieser Abfrage erstellen:

select * into consultaa2 from SELECT
CONCAT(    "UPDATE customers SET
customers_default_address_id= ",
(SELECT a.address_book_id FROM
address_book a where
c.customers_id=a.customers_id order by
address_book_id desc limit 1),    "
WHERE customers_id = ", customers_id,
";") AS sql_statement FROM customers c
where c.customers_id > 3894;

Die Abfrage ist zu lang für den Browser, um den concat anzuzeigen, und ich brauche dies, um diese Aktualisierungen vorzunehmen.

Antworten:

14 für die Antwort № 1

Das Einfügen in eine Tabelle mit Informationen aus einer Abfrage hat das Format

INSERT INTO <TABLE-1>
SELECT * FROM <TABLE-2>

In deinem Fall wäre es das

insert into consultaa2
SELECT CONCAT( "UPDATE customers SET customers_default_address_id= ",
(SELECT a.address_book_id FROM address_book a where c.customers_id=a.customers_id order by address_book_id desc limit 1), " WHERE customers_id = ", customers_id, ";") AS sql_statement FROM customers c where c.customers_id > 3894;

Stellen Sie nur sicher, dass die Spalten in der Tabelle, in die Sie einfügen, und die von der Auswahlabfrage zurückgegebenen Spalten übereinstimmen.


97 für die Antwort № 2

Du kannst es so machen:

CREATE TABLE tablename SELECT * FROM othertable;

tablename ist der Name der neuen Tabelle, die Sie erstellen möchten, SELECT * FROM othertable ist die Abfrage, die die Daten zurückgibt, aus denen die Tabelle erstellt werden soll.


8 für die Antwort № 3

mysql erstellt neue Tabelle

Beispiel aus der mysql-Befehlszeile.

mysql> create table foo(id int, vorta text);
Query OK, 0 rows affected (0.02 sec)

Zeilen einfügen

mysql> insert into foo values(1, "for the hoarde");
Query OK, 1 row affected (0.00 sec)

schau, was da drin ist

mysql> select * from foo;
+------+----------------+
| id   | vorta          |
+------+----------------+
|    1 | for the horde  |
+------+----------------+
1 row in set (0.00 sec)

Erstellen Sie eine neue Tabelle mit Informationen aus einer Abfrage

mysql> create table foo2 select * from foo;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

Überprüfen Sie, ob die Daten verschoben wurden

mysql> select * from foo2;
+------+----------------+
| id   | vorta          |
+------+----------------+
|    1 | for the horde  |
+------+----------------+
1 row in set (0.00 sec)