web-dev-qa-db-ja.com

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;

ブラウザが連結を表示するにはクエリが長すぎるため、この更新を行うにはこれが必要です。

34
Saikios

*このメソッドは、createtable(OPタイトルごと)を作成しないことに注意してください。それを行うには this answer 。*をご覧ください


クエリからの情報をテーブルに挿入する形式は

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;

挿入するテーブルの列と、選択クエリから返される列が一致することを確認してください。

24
Sukumar

次のようにできます:

CREATE TABLE tablename SELECT * FROM othertable;

tablenameは作成する新しいテーブルの名前、SELECT * FROM othertableは、テーブルの作成元のデータを返すクエリです。

124
Daniel Hilgarth

mysql create new table

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)
11
Eric Leschinski