#mysql #sql
#mysql #sql
Вопрос:
У меня есть таблица с 2 столбцами, идентификатором пользователя и идентификатором сообщения. Я обновляю ее автоматически с помощью php-скрипта, но я не могу получить рабочую инструкцию insert. Я не возражаю, если есть дубликаты userid или messageid (на самом деле должны быть дубликаты обоих), я просто не хочу дублировать одну и ту же комбинацию userid и messageid. Есть ли какой-либо способ написать запрос, который сделает это за меня, или я должен обработать это на уровне php?
Я, вероятно, перепробовал 20 различных запросов, которые я нашел здесь и в Google, но не понял это правильно. Это было последнее, что я пробовал:
INSERT INTO interests_join (userid, interestid)
VALUES (1, 4)
WHERE NOT EXISTS
(SELECT userid, interestid FROM interests_join WHERE userid = 1 AND interestid = 4)
Ответ №1:
Вы можете добавить UNIQUE KEY
, sql откажется вставлять новую строку, которая является дубликатом существующей.
ALTER TABLE `interests_join` ADD UNIQUE `row` (`userid`, `interestid`);
Затем вам нужно будет проверить из PHP, был ли запрос успешным или нет (ошибка # 1062). Вы не можете применить ключ, если есть повторяющиеся строки, вы должны сначала удалить их.
Комментарии:
1. надеялся найти способ интегрировать это с помощью запроса, а не изменять таблицу, но это делает свою работу.