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

Bagaimana untuk Memilih Baris dengan Nilai Medan Pendua dalam Django Menggunakan ORM dan SQL?

DDD
DDDasal
2024-12-26 08:50:10814semak imbas

How to Select Rows with Duplicate Field Values in Django Using ORM and SQL?

Memilih Baris dengan Nilai Medan Pendua dalam Django

Pertimbangkan model Django dengan medan nama bukan unik yang membenarkan nilai pendua. Untuk memilih semua baris dengan sekurang-kurangnya satu nilai pendua medan nama, seseorang boleh meneroka kedua-dua pendekatan ORM dan SQL.

Pendekatan ORM Django

Menggunakan keupayaan pengagregatan Django, seseorang boleh mencapai tugas ini dengan ungkapan ORM berikut:

from django.db.models import Count
Literal.objects.values('name')
               .annotate(Count('id')) 
               .order_by()
               .filter(id__count__gt=1)

Ini ungkapan mengumpulkan contoh model mengikut nama, mengira bilangan kejadian setiap nama dan menapis hasil untuk memasukkan hanya nama dengan tika pendua.

Pendekatan Django ORM yang Dipertingkatkan

Walaupun pendekatan ORM sebelumnya menyediakan fungsi yang diperlukan, ia hanya mengembalikan nama dan maklumat kiraan. Untuk mendapatkan rekod sebenar, seseorang boleh membina QuerySet biasa berdasarkan nama pendua yang ditemui:

dupes = Literal.objects.values('name')
                       .annotate(Count('id'))
                       .order_by()
                       .filter(id__count__gt=1)
Literal.objects.filter(name__in=[item['name'] for item in dupes])

SQL Approach

Bagi mereka yang lebih suka penyelesaian SQL tulen, pertanyaan berikut akan menghasilkan hasil yang diingini:

select * from literal where name IN (
    select name from literal group by name having count((name)) > 1
);

Pertanyaan ini menggunakan subquery untuk mencari nama pendua dan kemudian memilih semua baris daripada jadual utama yang mana nama itu sepadan dengan salah satu pendua.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Nilai Medan Pendua dalam Django Menggunakan ORM dan SQL?. 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