Как удалить уникальные записи в MySQL? - PullRequest
0 голосов
/ 14 марта 2019

у меня есть такая таблица

rowID | StudentName | rollNo | Class
      |             |        |
1     | ABC         |10      |  5   
2     | ABC         |10      |  5
3     | xyz         |11      |  5
4     | asd         |12      |  5

как я могу удалить все записи unique, где класс 5

, чтобы у меня осталась таблица как

rowID | StudentName | rollNo | Class
      |             |        |
1     | ABC         |10      |  5  

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Я думаю, что это то, что вы хотите:

select min(id), StudentName, rollNo, Class
from t
where class = 5
group by StudentName, rollNo, Class
having count(*) > 1;

Если вы действительно хотите удалить записей, тогда вам нужно использовать delete:

delete t
    from t left join
         (select studentname, rollno, class, min(id) as min_id, count(*) as cnt
          from t
          group by studentname, rollno, class
         ) tt
         on t.id = tt.minid and tt.cnt > 1
    where tt.minid is null;
0 голосов
/ 14 марта 2019

Попробуйте это

DELETE t1 FROM table t1
        INNER JOIN
    table t2 
WHERE
    t1.rowID < t2.rowID AND t1.StudentName = t2.StudentName and t1.rollNo=t2.rollNo

при этом удаляются все повторяющиеся строки, оставляя строку с наибольшим rowID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...