Подтвердить что ты не робот

MySQL: создание новой таблицы с информацией из запроса

В MySQL я хотел бы создать новую таблицу со всей информацией в этом запросе:

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;

Запрос слишком длинный, чтобы браузер отображал concat, и мне нужно это, чтобы сделать это обновление.

4b9b3361

Ответ 1

* Обратите внимание, что этот метод не создает таблицу (согласно заголовку OP). Для этого посмотрите этот ответ. *


Вставка в таблицу с информацией из запроса имеет формат

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

В вашем случае это было бы

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;

Просто убедитесь, что столбцы в таблице, в которую вы вставляете, и столбцы, возвращенные из запроса select, совпадают.

Ответ 2

Вы можете сделать это следующим образом:

CREATE TABLE tablename SELECT * FROM othertable;

tablename - это имя новой таблицы, которую вы хотите создать, SELECT * FROM othertable - это запрос, который возвращает данные, из которых должна быть создана таблица.

Ответ 3

mysql создать новую таблицу

Пример из командной строки mysql.

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

Вставить строки

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

посмотреть, что там

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

Создать новую таблицу с информацией из запроса

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

Проверьте, перемещены ли данные

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