디지털 노마드/ 자연인/ IT개발

개발자

[django] 중복 제거, group by, raw SQL query로 하는 방법

포하 2021. 7. 22. 17:59

중복을 제거 하기 위해 distinct, group by를 사용하는데요, 장고에서 group by 사용하는 방법을 알아 보겠습니다.

 

개인적으로 쿼리를 사용하는 것이 익숙해서 HeidiSQL에서 쿼리 테스트를 하고 raw SQL 쿼리를 코드에 직접입력하는 방식을 사용합니다.

 

HeidiSQL

from django.db import connection


    cursor = connection.cursor()
    query = "SELECT id FROM posts GROUP BY subject HAVING COUNT(subject)>1"
    cursor.execute(query)
    ids_list = [item[0] for item in cursor.fetchall()]
    
    queryset = Posts.objects.filter(id__in=ids_list)
    for posts in queryset:
        posts.active = 0
        posts.save()

같은 subject의 count가 1개 초과로, 중복으로 판단되는 행에 대하여 active=0 해줍니다.

 

하지만 중복목록이 만개라면?

 

다음 포스트는 update를 Raw SQL Query하는 방법을 알아보겠습니다.