MySQL, если существует, обновить значения еще вставить

Я создаю приложение, которое хранит посещаемость студентов.

Я создаю базу данных, которая будет хранить эту посещаемость, и я застрял на запрос MySQL.

Я хочу, чтобы запрос выполнял поиск по «названию лекции» и «user_id» (внешний ключ из другой базы данных), и, если таковой существует, увеличивает посещаемость лекцией студентов (посещено ++ и всего ++)

Пока у меня есть это:

    INSERT INTO `attendance`(`attendance_id`, `module_code`, `lecture_name`,
`attended`, `total`, `user_id`) VALUES ("null","test","TEST",1,1,1)
ON DUPLICATE KEY UPDATE
attended = attended+1,total = total+1

Это вставит новую строку, но для ON DUPLICATE нет способа передать первичный ключ для проверки на «дубликат».

Мне было интересно, есть ли другой способ сделать это в MySQL, кроме ON DUPLICATE KEY или кто-нибудь может мне помочь.

Вот скриншот базы данных. Например, см. «Исследование операций», которое было создано, когда оно должно увеличивать значения. Это потому, что у меня нет возможности добавить первичный ключ в запрос SQL.

Буду признателен за любую помощь в этом,
Благодарю.

скриншот базы данных

0

Решение

Использование null в двойных кавычках вызывает беспокойство. Итак, я думаю, что вы должны написать запрос как:

INSERT INTO `attendance`(`module_code`, `lecture_name`, `attended`, `total`, `user_id`)
VALUES ('test', 'TEST', 1, 1, 1)
ON DUPLICATE KEY UPDATE attended = attended + 1, total = total + 1 ;

Чтобы это сработало, вам нужен уникальный индекс (lecture_name, user_id),

Ваша модель данных кажется подозрительной, потому что таблица повторяется lecture_name на нескольких рядах. Мне кажется, что вы хотели бы lectures стол и использовать lecture_id в этой таблице.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector