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
Lepaskan: 2024-12-24 03:01:23
asal
545 orang telah melayarinya

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');
Salin selepas log masuk

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');
Salin selepas log masuk

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';
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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