Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Baris dengan Nilai Medan Pendua dalam Django?

Bagaimana untuk Memilih Baris dengan Nilai Medan Pendua dalam Django?

Susan Sarandon
Susan Sarandonasal
2025-01-04 11:09:35735semak imbas

How to Select Rows with Duplicate Field Values in Django?

Memilih Baris dengan Nilai Medan Pendua dalam Django

Untuk memilih semua baris daripada model yang mempunyai sekurang-kurangnya satu nilai pendua untuk medan tertentu , anda boleh menggunakan gabungan pengagregatan dan penapisan Django keupayaan:

  1. Nilai agregat: Gunakan kaedah anotasi() untuk mengira kiraan nilai pendua untuk medan yang ditentukan. Contohnya, untuk model dengan medan nama:
from django.db.models import Count
dupes = Literal.objects.values('name').annotate(id_count=Count('id'))
  1. Tapis berdasarkan kiraan: Gunakan kaedah penapis() untuk memilih baris yang bilangannya melebihi 1. Ini akan mengembalikan ValuesQuerySet yang mengandungi pendua nilai:
dupes = dupes.filter(id_count__gt=1)
  1. Ambil rekod lengkap: Untuk mendapatkan rekod lengkap, gunakan penapis masuk untuk memilih baris yang mana medan nama sepadan dengan nilai pendua:
dupes = Literal.objects.filter(name__in=[item['name'] for item in dupes])

SQL Alternatif Penyelesaian:

Jika mahu, anda juga boleh menggunakan subkueri untuk mencapai hasil yang sama:

SELECT *
FROM literal
WHERE name IN (
    SELECT name
    FROM literal
    GROUP BY name
    HAVING COUNT(*) > 1
);

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Nilai Medan Pendua dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn