2009-10-14 9 views
5

¿Es posible utilizar una consulta "seleccionar" dentro de la consulta "Insertar", pero la condición es que quiero utilizar el mismo nombre de tabla para "seleccionar" y "Insertar" consulta.
Por ejemplo
mysql> insert into sample_elements (name,position,ownerel) values ('Namespace1', select id from sample_elements where name='Namespace1',0);Utilice la consulta de selección dentro de la consulta Insertar para el mismo nombre de tabla

Por favor, guíame sobre esto.

Respuesta

16

Cambiar la inserción a tener el siguiente aspecto:

insert into sample_elements (name,position,ownerel) select 'Namespace1',id,0 from sample_elements where name='Namespace1'; 

Básicamente en lugar de utilizar los valores utilice únicamente la instrucción de selección e introduzca los valores harcoded como columnas

2

creo que puede hacerlo. Puede utilizar:

INSERT INTO table (..fields) SELECT ..fields.. FROM table; 
0

No sé mysql pero puede intentar lo siguiente?

insert into sample_elements select name, id, 0 from sample_elements where name='Namespace1' 
0

No estoy seguro. Creo que esta inserción dentro de seleccionar para encontrar ya existe o con qué propósito.

Gracias

-1

aquí es otro formato que va a funcionar, usando el 'SET' construir. Prefiero este formato para la mayoría de mi SQL, ya que los nombres de campo están emparejados con los valores: hace que el mantenimiento sea mucho más fácil que las listas de campo/valor que dependen totalmente del posicionamiento.

INSERT INTO sample_elements SET 
name = 'Namespace1', 
position = (SELECT id FROM sample_elements WHERE name='Namespace1'), 
ownere1 = 0; 
+0

-1 Esta solución no funciona para MySQL, que el OP claramente está utilizando. Vea esta respuesta: http://stackoverflow.com/a/14302701/998919 – fgblomqvist

+0

SI trabaja en mySQL, ahí es donde lo usé. Por favor, aclare dónde/cómo no funciona, ya que creo que encontrará que es su implementación/versión/controlador el problema, no mySQL. saludos –

+0

Ya lo especifiqué, verifique la respuesta que he vinculado. Indique al menos la versión de la base de datos MySQL en la que la probó. – fgblomqvist

Cuestiones relacionadas