2010-06-01 12 views
33

Quando provo ad eseguire query seguente:SELECT INTO ed errore "variabile non dichiarata"

SELECT id_subscriber 
    INTO newsletter_to_send 
    FROM subscribers 

ottengo un errore:

#1327 - Undeclared variable: newsletter_to_send

Cosa c'è di sbagliato con quella query?

risposta

39
INSERT ... SELECT 

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

INSERT INTO newsletter_to_send 
SELECT id_subscriber FROM subscribers 

PS: sei sicuro che non è necessario in WHERE clausola?

+0

funziona bene, grazie! – hsz

+2

Per usare insert in dobbiamo prima creare la tabella, in questo caso se la tabella newsletter_to_send non esiste, ci sarà errore! –

+0

@Praveen Kumar: è ovvio che è necessario avere un server, con mysql installato e tabella creata, non è vero? – zerkms

18

MySQL non supporta la sintassi SELECT ... INTO ....

È necessario utilizzare la sintassi INSERT INTO ... SELECT .. per eseguire lì.

Leggi tutto qui .. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

ti dispiacerebbe aiutarmi con il problema qui http: // StackOverflow .com/questions/43987326/converting-oracle-trigger-to-mysql-trigger – sam

3

MySQL Server non supporta SELECT ... INTO estensione TABELLA Sybase SQL. Invece, MySQL Server supporta la sintassi SQL standard di INSERT INTO ... SELECT, che è fondamentalmente la stessa cosa. Vedi Sezione 12.2.5.1, "INSERT ... SELECT Syntax".

Ref: - this

8

MySql non supporta SELECT INTO [table]. Supporta solo SELECT INTO [variable] e può fare solo questa variabile alla volta.

Che cosa si può fare, tuttavia è usare la sintassi CREATE TABLE con un SELECT in questo modo:

CREATE TABLE bar ([column list]) SELECT * FROM foo; 
+0

Questo esempio è buono e permette a mysql di fare l'equivalente di SELECT ... INTO ... creando automaticamente una tabella – ejectamenta

+0

Almeno per l'ultima versione di MySQL è possibile assegnare più valori a più variabili in una istruzione 'SELECT [valori] INTO [variabili]'. Controlla https://dev.mysql.com/doc/refman/5.7/en/select-into.html –

-3

MySql non supporta SELECT INTO [table]. Supporta solo SELECT INTO [variable] e può fare solo questa variabile alla volta.

Cosa si può fare, però è usare la sintassi CREATE TABLE con un SELECT in questo modo:

11

Penso che si possa seguire il mio lasciato il posto e spero che sarà in grado di risolvere il problema.

Al primo utilizzo questo comando SQL per creare una nuova tabella in cui si desidera prendere il backup

CREATE TABLE destination_table_name LIKE source_table_name; 

Dopo di allora è possibile utilizzare questo comando per copiare tali dati

INSERT INTO destination_table_name 
SELECT * FROM source_table_name; 

Se si dispone già di dati precedenti nella tabella Destinazione, In primo luogo è possibile utilizzare questo comando

TRUNCATE TABLE destination_table_name; 

Grazie Da Md.Maruf Hossain

+0

Grazie aiuto ... –

8
CREATE TABLE table_name 
AS 
SELECT ...(your select)
3

Ho provato a lavorare su questo proprio ora, e questo funziona per me:

CREATE TABLE New_Table_name 
SELECT * FROM Original_Table_name; 
+1

il "Nuovo ~ è un po 'fuorviante e dovrebbe essere omesso –

0

mysql non supportano SELECT ... INTO ... sintassi,

se si tratta di una nuova tabella, usa la sintassi CREATE TABLE ... SELECT ....

esempio:

CREATE TABLE artists_and_works 
    SELECT artist.name, COUNT(work.artist_id) AS number_of_works 
    FROM artist LEFT JOIN work ON artist.id = work.artist_id 
    GROUP BY artist.id; 

Read more here create-table-select