¿Seleccionar mientras se inserta?

No estoy seguro de si es posible, pero estoy tratando de hacer una inserción mientras selecciono un valor para hacer un +1. La razón por la que estoy haciendo esto es porque mi columna es de incrementos automáticos, pero los valores están por todas partes.

Esto es lo que tengo hasta ahora y no me deja hacer la inserción:

insert into channels set chanid=(select chanid from channels where parent=2
order by chanid desc limit 1)+1

preguntado el 31 de julio de 12 a las 11:07

4 Respuestas

Intente usar un alias en la subconsulta. Hizo el truco para mí.

insert into channels
set chanid=(
    select c.chanid
    from channels as c
    where c.parent=2
    order by c.chanid desc
    limit 1
)+1

Referencia: http://bugs.mysql.com/bug.php?id=6980

Respondido 02 ago 12, 20:08

insert into channels(chanid)
select chanid+1 from channels where parent=2 
order by chanid desc limit 1 

Respondido 31 Jul 12, 11:07

no funciona. Estoy tratando de hacer esto directamente en mysql, no a través de una página php. elvoipman

Si he entendido correctamente tu pregunta, prueba esto.

insert into channels set chanid=(select chanid+1 from channels where parent=2 order by chanid desc limit 1)

Respondido 31 Jul 12, 11:07

Lo intenté de esta manera anteriormente y todavía no me deja. Dice que no puedo especificar los "canales" de la tabla de destino desde la actualización desde caluse. elvoipman

Reiniciar auto-increment valores que puedes probar

SET @var_count = 0;

UPDATE channels 
SET chanid = (@var_count := @var_count + 1);

or

caer auto-increment columna y recréala con PRIMARY KEY en ella.

Respondido 31 Jul 12, 11:07

Todavía necesitaría hacer una inserción... ¿cómo puedo hacer una inserción y también tomar el último cánido de los respectivos valores iguales? - elvoipman

puede usar LAST_INSERT_ID() para obtener la última identificación insertada de la tabla. - Omesh

por favor dame un ejemplo de cómo hacer esto - no estoy usando php para esto - elvoipman

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.