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
797 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!

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