Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menguatkuasakan Syarat Merentas Berbilang Baris Apabila Menyertai Jadual dalam SQL?

Bagaimana untuk Menguatkuasakan Syarat Merentas Berbilang Baris Apabila Menyertai Jadual dalam SQL?

Barbara Streisand
Barbara Streisandasal
2024-12-28 09:07:10935semak imbas

How to Enforce Conditions Across Multiple Rows When Joining Tables in SQL?

Menggunakan SQL untuk Menguatkuasakan Syarat Merentas Berbilang Baris dalam Gabungan

Memandangkan pertanyaan awal anda mengenai penguatkuasaan syarat merentas berbilang baris dalam gabungan, mari kita huraikan teknik yang tersedia.

Ujian Berbeza Baris

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'

Mengagregatkan Baris

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!

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