Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Pengguna dengan Kedua-dua 'tag1' dan 'tag2' dalam SQL Menggunakan JOINs?

Bagaimana untuk Memilih Pengguna dengan Kedua-dua 'tag1' dan 'tag2' dalam SQL Menggunakan JOINs?

DDD
Lepaskan: 2024-12-28 02:08:09
asal
851 orang telah melayarinya

How to Select Users with Both 'tag1' and 'tag2' in SQL Using JOINs?

Keadaan Merentas Berbilang Baris dalam SQL JOIN

Masalah: Menggunakan syarat merentas berbilang baris dalam SERTAI untuk mendapatkan semula rekod yang sepadan.

Objektif: Pilih pengguna yang mempunyai kedua-dua 'tag1' dan tag 'tag2'.

Aplikasi

Terdapat dua pendekatan utama untuk menyelesaikan masalah ini:

1. Menguji Baris Individu

A. WUJUD:

SELECT * 
FROM users 
WHERE EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name ='tag1') 
  AND EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name ='tag2')
Salin selepas log masuk

B. Sub-pertanyaan:

SELECT * 
FROM users 
WHERE id IN (SELECT user_id FROM tags WHERE name ='tag1') 
  AND id IN (SELECT user_id FROM tags WHERE name ='tag2') 
Salin selepas log masuk

C. MENYERTAI:

SELECT u.* 
FROM users u 
INNER JOIN tags t1 ON u.id = t1.user_id
INNER JOIN tags t2 ON u.id = t2.user_id
WHERE t1.name = 'tag1' 
  AND t2.name = 'tag2'
Salin selepas log masuk

2. Mengagregatkan Baris

A. KIRAAN:

SELECT users.id, users.user_name
FROM users 
INNER JOIN tags ON users.id = tags.user_id
WHERE tags.name IN ('tag1', 'tag2')
GROUP BY users.id, users.user_name
HAVING COUNT(*) = 2
Salin selepas log masuk

B. Pemprosesan Rentetan:

SELECT user.id, users.user_name, GROUP_CONCAT(tags.name) as all_tags
FROM users INNER JOIN tags ON users.id = tags.user_id
GROUP BY users.id, users.user_name
HAVING FIND_IN_SET('tag1', all_tags) > 0 AND FIND_IN_SET('tag2', all_tags) > 0 
Salin selepas log masuk

Pertimbangan

  • Menguji Baris Individu: Sesuai untuk set data kecil, tetapi prestasi mungkin terjejas untuk jumlah data yang besar.
  • Mengagregatkan Baris: Lebih berskala dari segi prestasi, tetapi mempunyai had jika pendua boleh wujud dalam agregat.
  • Keserasian Pangkalan Data: Teknik pemprosesan rentetan mungkin memerlukan sambungan khusus pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Pengguna dengan Kedua-dua 'tag1' dan 'tag2' dalam SQL Menggunakan JOINs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan