ver seleccionar registros registro por especifico ejemplos datos dato consultar consulta buscar mysql insert increment

mysql - seleccionar - Incrementa un campo de base de datos por 1



seleccionar base de datos mysql (5)

Actualizando una entrada:

Un simple incremento debería hacer el truco.

UPDATE mytable SET logins = logins + 1 WHERE id = 12

Insertar nueva fila, o Actualizar si ya está presente:

Si desea actualizar una fila previamente existente, o insertarla si aún no existe, puede usar la sintaxis REPLACE o la opción INSERT...ON DUPLICATE KEY UPDATE (como demostró Rob Van Dam en su respuesta ).

Insertar una nueva entrada:

¿O tal vez está buscando algo como INSERT...MAX(logins)+1 ? Básicamente, ejecutaría una consulta muy parecida a la siguiente: tal vez un poco más compleja según sus necesidades específicas:

INSERT into mytable (logins) SELECT max(logins) + 1 FROM mytable

Con MySQL, si tengo un campo, por ejemplo, inicios de sesión, ¿cómo voy a actualizar ese campo por 1 dentro de un comando sql?

Estoy intentando crear una consulta INSERT, que crea firstName, lastName e inicios de sesión. Sin embargo, si ya existe la combinación de firstName y lastName, incremente los inicios de sesión en 1.

para que la mesa se vea así ...

firstName----|----lastName----|----logins John Jones 1 Steve Smith 3

Estoy detrás de un comando que, cuando se ejecuta, insertaría una nueva persona (es decir, Tom Rogers) o incrementaría los inicios de sesión si John Jones era el nombre utilizado.


Esto es más una nota a pie de página para varias de las respuestas anteriores que sugieren el uso de ON DUPLICATE KEY UPDATE , TENGA EN CUENTA que esto NO siempre es seguro para la replicación, por lo que si alguna vez planea crecer más allá de un único servidor, querrá evitar esto. y use dos consultas, una para verificar la existencia, y luego una para UPDATE cuando exista una fila, o INSERT cuando no exista.


No dijiste lo que intentas hacer, pero lo insinuaste lo suficiente en los comentarios a la otra respuesta. Creo que probablemente estés buscando una columna de incremento automático

create table logins (userid int auto_increment primary key, username varchar(30), password varchar(30));

entonces no se necesita un código especial en la inserción. Sólo

insert into logins (username, password) values (''user'',''pass'');

La API de MySQL tiene funciones para decirle qué ID de usuario se creó cuando ejecuta esta declaración en el código del cliente.


No soy experto en MySQL, pero es probable que debas consultar los desencadenantes, por ejemplo, ANTES DE INSERTAR. En el activador puede ejecutar la consulta de selección en su tabla original y, si encuentra algo, simplemente actualice la fila ''inicios de sesión'' en lugar de insertar nuevos valores. Pero todo esto depende de la versión de MySQL que esté ejecutando.


Si puede hacer de manera segura (firstName, lastName) la PRIMARY KEY o al menos poner una clave UNIQUE en ellos, entonces puede hacer esto:

INSERT INTO logins (firstName, lastName, logins) VALUES (''Steve'', ''Smith'', 1) ON DUPLICATE KEY UPDATE logins = logins + 1;

Si no puedes hacer eso, entonces tendrás que ir a buscar la clave primaria primero, así que no creo que puedas lograr lo que quieres en una consulta.