Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Nilai Pendua dengan Cekap dalam Django Menggunakan ORM dan SQL?
Memilih Nilai Pendua dalam Django: Penyelesaian ORM dan SQL
Dalam Django, jika anda mempunyai model dengan medan bukan unik yang mungkin mempunyai nilai pendua, anda mungkin perlu mendapatkan semula semua baris dengan sekurang-kurangnya satu nilai pendua. Ini boleh dicapai menggunakan ORM Django dan SQL mentah.
Penyelesaian Django ORM:
Untuk memilih baris dengan nilai medan pendua menggunakan ORM Django, anda boleh menggunakan pendekatan berikut:
from django.db.models import Count dupes = Literal.objects.values('name') .annotate(Count('id')) .order_by() .filter(id__count__gt=1)
Ini akan mengembalikan ValuesQuerySet yang mengandungi hanya medan nama dan kiraan medan id. Untuk mendapatkan QuerySet biasa, anda boleh menggunakan ini sebagai subquery:
Literal.objects.filter(name__in=[item['name'] for item in dupes])
SQL Solution:
Sebagai alternatif kepada penyelesaian Django ORM, anda juga boleh gunakan SQL mentah seperti ini:
SELECT * FROM literal WHERE name IN ( SELECT name FROM literal GROUP BY name HAVING COUNT((name)) > 1 );
Perbandingan dan Prestasi Pertimbangan:
Penyelesaian ORM Django biasanya lebih disukai kerana ia lebih ringkas dan boleh memanfaatkan ciri pengoptimuman Django. Walau bagaimanapun, untuk pertanyaan kompleks atau set data yang besar, penyelesaian SQL mentah mungkin menawarkan prestasi yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Pendua dengan Cekap dalam Django Menggunakan ORM dan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!