Memandangkan pertanyaan awal anda mengenai penguatkuasaan syarat merentas berbilang baris dalam gabungan, mari kita huraikan teknik yang tersedia.
1A. Menggunakan EXISTS:
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')
1B. Menggunakan 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')
1C. Memanfaatkan SERTAI:
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'
2A. Menggunakan COUNT:
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
2B. Menggunakan 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
Nota: Pendekatan ini menggunakan sambungan khusus MySQL dan tidak cekap berbanding yang lain.
Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Syarat Merentas Berbilang Baris Apabila Menyertai Jadual dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!