Tipp zur SQL-Abfrage mit mehreren Bedingungen für Datensätze in derselben Spalte
Bei SQL-Abfragen erfordert das Filtern von Datensätzen basierend auf mehreren Bedingungen, insbesondere wenn diese Bedingungen für dieselbe Spalte gelten, einige Fähigkeiten. In diesem Artikel erfahren Sie, wie Sie mit dieser Situation effizient umgehen können.
Zum Beispiel ordnet eine Tabelle Benutzer und Tag-Typen zu und das Ziel besteht darin, die Kontakt-ID zu erhalten, die mit dem Häkchen in allen Suchformularen übereinstimmt. Auf den ersten Blick erscheint die folgende Abfrage intuitiv:
<code class="language-sql">SELECT contactid WHERE flag = 'Volunteer' AND flag = 'Uploaded'...</code>
Es werden jedoch keine Ergebnisse zurückgegeben. Weil der UND-Operator erfordert, dass dieselbe Zeile gleichzeitig zwei Bedingungen erfüllt, und eine solche Zeile in dieser Tabelle nicht vorhanden ist.
Um dieses Problem zu lösen, besteht eine Möglichkeit darin, GROUP BY
und HAVING COUNT(*) = n
zu verwenden, wobei n die Anzahl der ausgewählten Marker ist:
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...) 列表中的数量匹配</code>
Diese Methode prüft, ob die contact_id n-mal mit jedem der n Tags vorkommt, die in der WHERE
-Klausel enthalten sind. Eine andere Möglichkeit ist die Verwendung von join:
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如有必要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
Hier werden mehrere Joins verwendet, um Zeilen, die dieselbe contact_id darstellen, mit den erforderlichen Tags zu verknüpfen.
Welche Methode Sie wählen, hängt von der Anzahl der zu prüfenden Tags und der Anzahl der übereinstimmenden Datensätze ab. GROUP BY
kann schneller sein, wenn es um eine große Anzahl von Tags und eine kleine Anzahl von Übereinstimmungen geht, während der Join möglicherweise eine bessere Leistung erbringt, wenn die Anzahl der Tags gering ist und es viele Übereinstimmungen gibt. Es wird empfohlen, beide Methoden an realen Daten zu testen, um die beste Leistung zu erzielen.
Das obige ist der detaillierte Inhalt vonWie wählt man effizient Datensätze aus, die mehreren Bedingungen in derselben Spalte in SQL entsprechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!