2010-06-01 15 views
33

Cuando intento ejecutar siguiente consulta:SELECT INTO y error "variable no declarada"

SELECT id_subscriber 
    INTO newsletter_to_send 
    FROM subscribers 

Me aparece un error:

#1327 - Undeclared variable: newsletter_to_send

Qué le pasa a esa consulta?

Respuesta

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: ¿está seguro de que no es necesario en WHERE cláusula?

+0

funciona bien, gracias! – hsz

+2

Para usar Insertar necesitamos crear primero la tabla, en este caso si la tabla newsletter_to_send no existe, habrá un error! –

+0

@Praveen Kumar: es obvio que necesita tener un servidor, con MySQL instalado y tabla creada, ¿no? – zerkms

18

MySQL no admite la sintaxis SELECT ... INTO .... Para obtenerlo, debe usar la sintaxis INSERT INTO ... SELECT ...

Lea más aquí .. http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

¿te importaría ayudarme con el problema aquí, por favor http: // stackoverflow .com/questions/43987326/converting-oracle-trigger-to-mysql-trigger – sam

3

MySQL Server no admite la instrucción SELECT ... INTO extensión de la mesa de Sybase SQL. En cambio, el servidor MySQL admite INSERT INTO ... SELECT la sintaxis SQL estándar, que es básicamente lo mismo. Consulte la Sección 12.2.5.1, "INSERTAR ... SELECCIONAR Sintaxis".

Ref: - this

8

MySQL no soporta SELECT INTO [table]. Solo es compatible con SELECT INTO [variable] y solo puede hacer esto una variable a la vez.

Lo que puede hacer, sin embargo es utilizar la sintaxis CREATE TABLE con un SELECT así:

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

Este ejemplo es bueno y permite a mysql hacer el equivalente a SELECT ... INTO ... creando automáticamente una tabla – ejectamenta

+0

Al menos para la última versión de MySQL puede asignar múltiples valores a múltiples variables en una declaración 'SELECT [values] INTO [variables]'. Compruebe https://dev.mysql.com/doc/refman/5.7/en/select-into.html –

-3

MySQL no soporta SELECT INTO [table]. Solo es compatible con SELECT INTO [variable] y solo puede hacer esto una variable a la vez.

Lo que puede hacer, sin embargo es utilizar la sintaxis CREATE TABLE con un SELECT así:

11

Creo que se puede seguir mi camino dado y esperamos que pueda ser capaz de solucionar su problema.

el primer uso de este comando SQL para crear una nueva tabla en la que desea tener copia de seguridad

CREATE TABLE destination_table_name LIKE source_table_name; 

Después, puede utilizar este comando para copiar los datos de

INSERT INTO destination_table_name 
SELECT * FROM source_table_name; 

Si ya tiene datos previos en su tabla de Destino, En primer lugar, puede usar este comando

TRUNCATE TABLE destination_table_name; 

Gracias Por Md.Maruf Hossain

+0

Gracias, ayude ... –

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

he intentado trabajar en este en este momento y esto funciona para mí:

CREATE TABLE New_Table_name 
SELECT * FROM Original_Table_name; 
+1

el "Nuevo ~ es un poco engañoso y debe ser omitido –

0

MySQL no son compatibles con SELECT ... INTO ... sintaxis,

si es una nueva tabla, use la sintaxis CREATE TABLE ... SELECT ...

ejemplo:

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; 

leer más aquí create-table-select

Cuestiones relacionadas