Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Baris dengan Nilai Medan Pendua Menggunakan Django ORM?

Bagaimana untuk Mencari Baris dengan Nilai Medan Pendua Menggunakan Django ORM?

Linda Hamilton
Lepaskan: 2025-01-05 08:42:41
asal
755 orang telah melayarinya

How to Find Rows with Duplicate Field Values Using Django ORM?

Pertanyaan Django untuk Baris dengan Nilai Medan Pendua

Andaikan kita mempunyai model Django dengan medan bukan unik. Kita perlu memilih semua baris daripada model yang mempunyai sekurang-kurangnya satu nilai pendua untuk medan itu.

Pendekatan SQL Biasa

Satu penyelesaian yang mungkin adalah menggunakan SQL biasa:

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

Django ORM Pendekatan

Menggunakan ORM Django, kita boleh mencapai hasil yang sama dengan gabungan nilai(), anotasi(), order_by(), dan penapis():

from django.db.models import Count

dupes = Literal.objects.values('name') \
                    .annotate(Count('id')) \
                    .order_by() \
                    .filter(id__count__gt=1)
Salin selepas log masuk

Memandangkan kod di atas mengembalikan ValuesQuerySet, kita perlu menukarnya kepada QuerySet biasa untuk menggunakannya sebagai penapis:

duplicates = Literal.objects.filter(name__in=[item['name'] for item in dupes])
Salin selepas log masuk

Pendekatan ini memastikan bahawa kami hanya memilih baris dengan nilai nama pendua.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan