У меня есть некоторое загрязнение данных в таблице, которое мне трудно удалить ... Я устранил причину загрязнения, поэтому этого больше не будет, но есть несколько записей, которые мне теперь нужно удалить, и Мне сложно понять, как это сделать.
Суть проблемы заключается в следующем.
У меня есть таблица с идентификаторами пользователей и групп. Пользователь может существовать в нескольких группах, поэтому я не могу решить эту проблему с помощью уникальной ассоциации.
В моем случае, скажем, группы 4 и 5 являются взаимоисключающими (что означает, что пользователь не может принадлежать обеим).
Мне нужно выполнить удаление в таблице user_groups, где я могу сказать (по-английски): Удалите эту строку, если userID = X и идентификатор группы = 4, ЕСЛИ есть также строка, где userID = X и groupID = 5.
Я не хочу удалять ВСЕ строки, где groupID = 4, только те, которые относятся к пользователям, у которых также есть строка, содержащая groupID = 5.
Любая помощь очень ценится.
1 ответ
Это приведет к удалению всех пользователей в группе 4, у которых есть дубликаты в группе 5.
DELETE FROM user_groups AS G1
WHERE G1.groupID=4
AND G1.userID IN (SELECT G2.userID FROM user_groups
WHERE G2.userID=G1.userID AND G2.GroupID=5)
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.