Cara Melaksanakan Syarat SQL pada Berbilang Baris dalam Gabungan
Isu yang dibentangkan berkisar tentang memilih pengguna yang memiliki dua teg khusus daripada gabungan operasi. Walaupun contoh yang diberikan menggunakan IN mengembalikan pengguna dengan sama ada teg, hasil yang diinginkan adalah untuk mendapatkan semula pengguna yang memiliki kedua-dua teg. Untuk mencapai matlamat ini, memanfaatkan SEMUA kata kunci adalah tidak sesuai.
Penyelesaian
1. Menguji Baris Berbeza
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')
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')
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'
2. Mengagregatkan Baris
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
(MySQL Specific) 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
Atas ialah kandungan terperinci Bagaimana untuk Memilih Pengguna dengan Berbilang Tag Menggunakan SQL Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!