Как удалить дополнительную запись из моей базы данных sql и иметь только 1 строку,

#c# #asp.net #mysql

#c# #asp.net #mysql

Вопрос:

 RowID          MsgID         UserID
1                5            33   
2                5            12
3                5            21
4                5            33   
5                5            33
 

У меня есть эта таблица, которую я обновляю в разных частях кода,

Здесь есть три записи для идентификатора пользователя 33 для MsgID 5. Я хочу иметь только одну строку для идентификатора пользователя 33 для идентификатора msgid 5. Как я могу удалить запись для идентификатора пользователя 33, чтобы у меня была только 1 запись для 33.

Я использую MySQL

Комментарии:

1. Прежде всего, если бы вы использовали unique index on columns(msg, user) , у вас не было бы этой проблемы сейчас.

2. Я имею в виду, что будет еще одна строка с идентификатором MsgID 6 и идентификатором пользователя 33. Итак, как я могу иметь уникальный индекс, для каждого сообщения он создает идентификатор msgid и идентификатор пользователя и вставляет в эту таблицу.

3. Идея заключается в том, что уникальный индекс находится в обоих столбцах одновременно как пара. Это позволит только один (5,33), только один (6,33), только один (a, b) в общей ситуации.

Ответ №1:

Отметьте, вы можете добавить уникальный ключ с ключевым словом IGNORE, например —

 ALTER IGNORE TABLE table_name
  ADD UNIQUE INDEX UK_table_name (MsgID, UserID);
 

Он создаст новый уникальный ключ и удалит все дубликаты из таблицы с помощью одной команды.

Дополнительная информация — ИЗМЕНИТЬ синтаксис ТАБЛИЦЫ.

Ответ №2:

Вы могли бы для упрощения создать новую таблицу (переименовать позже) и установить для столбцов значение unique, а затем просто

 INSERT IGNORE new_table
SELECT *
FROM old_table
 

Ответ №3:

Прежде чем вы сделаете «insert» в своем коде, вы должны проверить, есть ли строка с идентификатором пользователя 33 и MsgID 5, и если такая строка есть, вы должны использовать ее вместо вставки новой.

Комментарии:

1. он просит удалить записи, а не использовать то же самое. лучше всего установить ограничение на уникальный ключ..