Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Teg Berbilang Padanan Kandungan dengan Cekap dalam SQL?

Bagaimana untuk Mencari Teg Berbilang Padanan Kandungan dengan Cekap dalam SQL?

Linda Hamilton
Lepaskan: 2025-01-05 12:47:40
asal
501 orang telah melayarinya

How to Efficiently Find Content Matching Multiple Tags in SQL?

Pertanyaan SQL: Persimpangan Cekap untuk Berbilang Teg

Apabila bekerja dengan jadual teg yang diberikan kepada kandungan, perkara biasa perlu mengenal pasti kandungan yang sepadan dengan gabungan teg tertentu. Pendekatan naif menggunakan subkueri bersarang dengan cepat boleh menjadi sukar digunakan untuk berbilang teg.

Untuk mencapai persimpangan ini dengan cekap, kami boleh memanfaatkan pertanyaan SQL berikut:

SELECT contentID
FROM tags
WHERE tagID in (334, 338, 342)
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = 3;
Salin selepas log masuk

Penjelasan:

  • Klausa WHERE memilih baris yang mana tagID sepadan dengan mana-mana teg yang disediakan (cth., 334, 338, 342).
  • Klausa GROUP BY mengumpulkan hasil mengikut contentID, memastikan setiap bahagian kandungan hanya diwakili sekali.
  • Klausa HAVING menapis keputusan untuk memasukkan bahagian kandungan yang mempunyai semua teg yang ditentukan (dalam contoh, COUNT(DISTINCT tagID) = 3).

Dengan menggantikan ID teg tertentu dengan senarai berparameter dan melaraskan kiraan dalam klausa HAVING, pertanyaan ini menjadi umum untuk sebarang bilangan teg:

SELECT contentID
FROM tags
WHERE tagID in (...) --taglist
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = ... --tagcount;
Salin selepas log masuk

Pendekatan yang dioptimumkan ini menyediakan penyelesaian yang mantap untuk mencari persilangan berbilang teg dalam jadual dengan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Teg Berbilang Padanan Kandungan dengan Cekap dalam SQL?. 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