Увеличение поля базы данных на 1

С MySQL, если у меня есть поле, например логинов, как я могу обновить это поле на 1 в команде sql?

Я пытаюсь создать запрос INSERT, который создает firstName, lastName и logins. Однако, если комбинация firstName и lastName уже существует, увеличьте логины на 1.

поэтому таблица может выглядеть так.

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

Я после команды, что при запуске будет либо вставлять нового человека (то есть Тома Роджерса), либо увеличивать логины, если использовать имя Джона Джонса ..

Обновление записи:

Простое приращение должно сделать трюк.

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

Вставить новую строку или Обновить, если она уже присутствует:

Если вы хотите обновить ранее существующую строку или вставить ее, если она еще не существует, вы можете использовать синтаксис REPLACE или опцию INSERT...ON DUPLICATE KEY UPDATE (как продемонстрировал в своем ответе Rob Van Dam ).

Вставка новой записи:

Или, возможно, вы ищете что-то вроде INSERT...MAX(logins)+1 ? По сути, вы будете запускать запрос, похожий на следующий: возможно, немного сложнее в зависимости от ваших конкретных потребностей:

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

Если вы можете безопасно сделать (firstName, lastName) PRIMARY KEY или хотя бы поместить на них ключ UNIQUE, вы можете сделать это:

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

Если вы не можете этого сделать, тогда вам нужно будет получить все первичные ключи, поэтому я не думаю, что вы могли бы достичь того, чего хотите в одном запросе.

Вы не сказали, что вы пытаетесь сделать, но вы намекали на это достаточно хорошо в комментариях к другому ответу. Я думаю, что вы, вероятно, ищете автоинкрементный столбец

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

то при вставке не требуется специальный код. Просто

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

MySQL API имеет функции, чтобы сообщить вам, какой идентификатор пользователя был создан при выполнении этого оператора в клиентском коде.

Я не эксперт в MySQL, но вы, вероятно, должны смотреть на триггеры, например, до INSERT. В триггере вы можете запустить запрос выбора в своей исходной таблице, и если он найдет что-то, просто обновите «логины» строки вместо того, чтобы вставлять новые значения. Но все это зависит от версии MySQL, которую вы запускаете.

Это больше примечание к ряду ответов выше, которые предлагают использовать ON DUPLICATE KEY UPDATE , ОСТОРОЖНО, что это НЕ всегда безопасно для репликации, поэтому, если вы когда-либо планируете расти за пределами одного сервера, вы захотите избежать этого и использовать два запроса, один для проверки существования, а затем второй или UPDATE когда существует строка, или INSERT когда это не так.

Interesting Posts

Scp для удаленного сервера с sudo

Список устройств поддержки HCE?

Форматировать десятичное значение для процентных значений?

Как найти все ссылки (символические ссылки) в текущем каталоге?

Почему Outlook продолжает перемещать электронные письма в обычную папку «Junk»?

BUG: Невозможно выбрать даты на DatePicker, которые выходят за пределы плавающей надстройки VSTO

Как сравнить две строки в Perl?

Как мне выполнить резервное копирование / сохранение установленных драйверов устройств в Windows?

Значение по умолчанию параметра функции

Как найти, что ScrollViewer прокручивается до конца в WPF?

Как удалить первую строку текстового файла с помощью сценария bash / sed?

Octave / Matlab: удлинить вектор, чтобы он повторялся?

Ошибка Gradle: Минимальная поддерживаемая версия Gradle – 3,3. Текущая версия – 3.2

Ярлык для перезагрузки фрейма в Firefox?

Как отображать всплывающие подсказки в Tkinter?

Давайте будем гением компьютера.