MySQL: Creating a new table with information from a query
*Note that this method does not create a table (as per OP title). To do that see this answer.*
Inserting into a table with information from a query is of the format
INSERT INTO <TABLE-1>
SELECT * FROM <TABLE-2>
In your case, it would be
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;
Just make sure the columns in the table you are inserting into and the columns returned from the select query match.
mysql create new table
Example from mysql commandline.
mysql> create table foo(id int, vorta text);
Query OK, 0 rows affected (0.02 sec)
Insert rows
mysql> insert into foo values(1, 'for the hoarde');
Query OK, 1 row affected (0.00 sec)
look what's in there
mysql> select * from foo;
+------+----------------+
| id | vorta |
+------+----------------+
| 1 | for the horde |
+------+----------------+
1 row in set (0.00 sec)
Create a new table with information from a query
mysql> create table foo2 select * from foo;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
Check if the data moved
mysql> select * from foo2;
+------+----------------+
| id | vorta |
+------+----------------+
| 1 | for the horde |
+------+----------------+
1 row in set (0.00 sec)
You can do it like this:
CREATE TABLE tablename SELECT * FROM othertable;
tablename
is the name of the new table you want to create, SELECT * FROM othertable
is the query that returns the data the table should be created from.