ソフトウェア開発 プログラミング

[Django]QuerysetでDISTINCTを使用する方法

ソフトウェア開発
この記事は約2分で読めます。
スポンサーリンク

DjangoでたまにDISTINCTを使うんですが、毎回使い方を調べてたんで、メモしておきます。

スポンサーリンク

DISTINCTとは

SQLSELECT文で重複を除去してデータを取得する機能です。特定のフィールドの値のリストを取得したいが、重複した値は不要な時とかに利用します。

Djangoでの使用方法

DjangoQuerysetでの利用方法は下記の通りです。

records = MyModel.objects.all().order_by('key').distinct()

order_byをつけていない場合、レコードに値がバラバラに入っていると正しく重複を削除してくれないので注意が必要です。

ただ、上記の方法だとall()で全てのレコードとフィールドを取得しているので、primary keyが重複せず全てのレコードを取得してしまいます。

そこで、重複を除去して取得したいフィールドのみを指定するために、「values_list」を使用します。

records = MyModel.objects.all().order_by('key').distinct()values_list('key')

これで、「key」というフィールドの重複なしのデータを取得することができます。もし、条件付きで取得したい場合は、「all()」ではなく「filter()」を利用すれば、条件付きの重複なしのデータを取得可能です。

最後に

たまにしか利用しないDISTINCTなんですが、今回のようにきちんと使い方をまとめておいていざというときに役に立つようにしておきたいですね。

スポンサーリンク
スポンサーリンク
KoEをフォローする
CodeLab

コメント

タイトルとURLをコピーしました