sélectionner dans dans mysql

86

Je suis un utilisateur MSSQL et maintenant je convertis ma base de données en MySQL. J'écris la requête suivante dans MySQL:

select * into new_tbl from tbl

Et j'obtiens l'erreur suivante

Error : Undeclared variable new_tbl

Comment une telle requête doit-elle être correctement écrite dans MySQL?

Mandeep Singh
la source

Réponses:

128

Utilisez la syntaxe CREATE TABLE SELECT.

http://dev.mysql.com/doc/refman/5.0/en/create-table-select.html

CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Dave K
la source
La commande SELECT INTO crée une nouvelle table et peut être copiée des données d'une base de données à une autre comme
Shankar Regmi
3
La syntaxe correcte est: CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
csname1910
CREATE ... SELECT fonctionne, cela devrait être la réponse acceptée. Le mot-clé "AS" est apparemment facultatif et SELECT INTO ne fonctionne pas avec MySQL.
leo
Souligne qu'il ne crée pas d'index!
Ivan Ivković le
89

Dans MySQL, ça devrait être comme ça

INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';

Documentation MySQL

MuhammadHani
la source
8
Différence subtile. Dans ce cas, la table doit exister. Car select intoce n'est pas le cas. En fait, je pense que c'est une erreur si c'est le cas. Cette solution doit donc être précédée d'instructions qui dupliquent le schéma de table.
paxdiablo
Comme le dit paxdiablo, cela nécessite que la table dans laquelle vous insérez existe déjà. La syntaxe MSSQL utilisée par OP crée la table pour vous.
Dave K
7
Je n'ai peut-être pas répondu à la question du PO, mais heureusement, c'était exactement ce que je cherchais.
garyh