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
Lepaskan: 2024-12-28 09:07:10
asal
862 orang telah melayarinya

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

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

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

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

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

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!

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