/ / MySQL: Criando uma nova tabela com informações de uma consulta - mysql, sql, insert, sql-update

MySQL: Criando uma nova tabela com informações de uma consulta - mysql, sql, insert, sql-update

No MySQL, gostaria de criar uma nova tabela com todas as informações desta consulta:

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;

A consulta é muito longa para o navegador mostrar o concat e eu preciso disso para fazer isso.

Respostas:

14 para resposta № 1

Inserindo em uma tabela com informações de uma consulta é do formato

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

No seu caso, seria

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;

Apenas certifique-se de que as colunas na tabela em que você está inserindo e as colunas retornadas da consulta de seleção correspondam.


97 for answer № 2

Você pode fazer assim:

CREATE TABLE tablename SELECT * FROM othertable;

tablename é o nome da nova tabela que você deseja criar SELECT * FROM othertable é a consulta que retorna os dados dos quais a tabela deve ser criada.


8 para resposta № 3

mysql cria nova tabela

Exemplo da linha de comando do mysql.

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

Inserir linhas

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

olha o que está lá

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

Crie uma nova tabela com informações de uma consulta

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

Verifique se os dados foram movidos

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