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