Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memohon Syarat pada Berbilang Baris dalam SQL Joins?

Bagaimana untuk Memohon Syarat pada Berbilang Baris dalam SQL Joins?

Linda Hamilton
Linda Hamiltonasal
2024-12-24 03:01:23546semak imbas

How to Apply Conditions to Multiple Rows in SQL Joins?

Menggunakan Syarat pada Berbilang Baris dalam Gabungan menggunakan SQL

Apabila bekerja dengan cantuman, selalunya perlu menggunakan kriteria khusus pada berbilang baris dalam jadual bercantum. Ini boleh dicapai menggunakan pelbagai teknik yang melibatkan sama ada menguji baris individu atau mengagregatkan baris.

Menguji Baris Individu menggunakan EXISTS, Subqueries dan Joins

1A. WUJUD:

Kaedah ini membolehkan anda menyemak kewujudan baris yang memenuhi syarat tertentu.

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. Subqueries:

Subqueries juga boleh digunakan untuk memilih baris berdasarkan syarat dalam jadual bercantum.

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. JOIN:

INNER JOIN boleh digunakan untuk menguji keadaan pada berbilang baris. Walau bagaimanapun, kebolehskalaan kaedah ini lebih rendah berbanding dengan yang lain.

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';

Mengagregatkan Baris menggunakan COUNT dan Pemprosesan Rentetan

2A. KIRAAN:

Teknik ini bergantung pada pengagregatan baris mengikut kiraan. Ia berkesan apabila teg tidak boleh digunakan beberapa kali pada pengguna yang sama.

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. Pemprosesan Rentetan:

Untuk pangkalan data yang menyediakan sambungan pemprosesan rentetan, seperti GROUP_CONCAT dan FIND_IN_SET, pemprosesan rentetan boleh digunakan untuk menyemak berbilang teg. Walau bagaimanapun, kaedah ini boleh menjadi tidak cekap.

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 Memohon Syarat pada Berbilang Baris dalam SQL Joins?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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