Dans MySQL, je voudrais créer une nouvelle table avec toutes les informations de cette requête:
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;
La requête est trop longue pour que le navigateur affiche la concaténation et j'en ai besoin pour effectuer ces mises à jour.
* Notez que cette méthode ne fait pas créer une table (selon le titre OP). Pour ce faire, voir cette réponse . *
L'insertion dans un tableau avec les informations d'une requête est au format
INSERT INTO <TABLE-1>
SELECT * FROM <TABLE-2>
Dans votre cas, ce serait
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;
Assurez-vous simplement que les colonnes du tableau dans lequel vous insérez et les colonnes renvoyées par la requête de sélection correspondent.
Vous pouvez le faire comme ceci:
CREATE TABLE tablename SELECT * FROM othertable;
tablename
est le nom de la nouvelle table que vous souhaitez créer, SELECT * FROM othertable
est la requête qui renvoie les données à partir desquelles la table doit être créée.
mysql crée une nouvelle table
Exemple de ligne de commande mysql.
mysql> create table foo(id int, vorta text);
Query OK, 0 rows affected (0.02 sec)
Insérer des lignes
mysql> insert into foo values(1, 'for the hoarde');
Query OK, 1 row affected (0.00 sec)
regardez ce qu'il y a dedans
mysql> select * from foo;
+------+----------------+
| id | vorta |
+------+----------------+
| 1 | for the horde |
+------+----------------+
1 row in set (0.00 sec)
Créer une nouvelle table avec les informations d'une requête
mysql> create table foo2 select * from foo;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
Vérifiez si les données ont été déplacées
mysql> select * from foo2;
+------+----------------+
| id | vorta |
+------+----------------+
| 1 | for the horde |
+------+----------------+
1 row in set (0.00 sec)