Heim > Datenbank > MySQL-Tutorial > Wie erzwinge ich Bedingungen über mehrere Zeilen hinweg, wenn ich Tabellen in SQL verbinde?

Wie erzwinge ich Bedingungen über mehrere Zeilen hinweg, wenn ich Tabellen in SQL verbinde?

Barbara Streisand
Freigeben: 2024-12-28 09:07:10
Original
862 Leute haben es durchsucht

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

Einsatz von SQL zum Durchsetzen von Bedingungen über mehrere Zeilen in einem Join

Anhand Ihrer ersten Anfrage zum Durchsetzen von Bedingungen über mehrere Zeilen in einem Join wollen wir die verfügbaren Techniken näher erläutern.

Verschiedene Zeilen testen

1A. Verwendung von 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')
Nach dem Login kopieren

1B. Verwendung von Unterabfragen:

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')
Nach dem Login kopieren

1C. JOINs nutzen:

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'
Nach dem Login kopieren

Zeilen aggregieren

2A. Verwendung von COUNTs:

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
Nach dem Login kopieren

2B. Verwendung von String-Verarbeitung:

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
Nach dem Login kopieren

Hinweis: Dieser Ansatz nutzt MySQL-spezifische Erweiterungen und ist im Vergleich zu anderen ineffizient.

Das obige ist der detaillierte Inhalt vonWie erzwinge ich Bedingungen über mehrere Zeilen hinweg, wenn ich Tabellen in SQL verbinde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage