Heim  >  Artikel  >  Datenbank  >  Wie wähle ich MySQL-IDs mit mehreren spezifischen Spaltenwerten über Zeilen hinweg aus?

Wie wähle ich MySQL-IDs mit mehreren spezifischen Spaltenwerten über Zeilen hinweg aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 07:30:27649Durchsuche

How to Select MySQL IDs with Multiple Specific Column Values Across Rows?

Auswählen von MySQL-IDs, die in mehreren Zeilen mit bestimmten Spaltenwerten vorkommen

Das Identifizieren von Elementen, die zwei oder mehr spezifische Werte innerhalb einer bestimmten Spalte erfüllen, kann sein eine Herausforderung in MySQL. Betrachten Sie die folgende Tabellenstruktur:

+-----------------------+
| item_id | category_id |
+-----------------------+
|   1     |    200      |
|   1     |    201      |
|   1     |    202      |
|   2     |    201      |
|   2     |    202      |
|   3     |    202      |
|   3     |    203      |
|   4     |    201      |
|   4     |    207      |
+-----------------------+

Das Ziel besteht darin, nur Elemente auszuwählen, die zu beiden festgelegten Kategorien gehören, auch wenn sie möglicherweise mit zusätzlichen Kategorien verknüpft sind.

Ineffektive Lösungen:

  • WHERE Category_id = 201 AND Category_ID = 202: Erfolglos, da nach unmöglichen Bedingungen gesucht wird (zwei Werte in einer einzelnen Zeile).
  • WHERE Category_id = 201 OR Category_ID = 202: Gibt falsche Ergebnisse zurück (einschließlich Elemente, die nicht zu beiden Kategorien gehören).

Effektive Lösungen:

Selbstverknüpfung:

SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id = 201 AND c2.category_id = 202

Diese Methode verbindet Zeilen aus derselben Tabelle basierend auf einer gemeinsamen Spalte (item_id) und ermöglicht so Vergleiche zwischen mehreren Zeilen und ihren Werten.

GROUP BY:

SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201,202)
GROUP BY c.item_id
HAVING cat_count = 2

Unter Verwendung der GROUP BY-Funktion zählt dieser Ansatz die Anzahl unterschiedlicher Kategoriewerte für jede item_id. Es werden Elemente ausgewählt, deren cat_count der Anzahl der angegebenen Kategorien (in diesem Fall 2) entspricht.

Schlussfolgerung:

Beide Methoden identifizieren effektiv Elemente, die die gewünschten Kriterien erfüllen . Die Wahl zwischen ihnen hängt von den spezifischen Anforderungen und Überlegungen zur Datenbankleistung ab.

Das obige ist der detaillierte Inhalt vonWie wähle ich MySQL-IDs mit mehreren spezifischen Spaltenwerten über Zeilen hinweg aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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