Heim >Datenbank >MySQL-Tutorial >Wie wähle ich SQL-Datensätze aus, die mehreren Bedingungen in derselben Spalte entsprechen?

Wie wähle ich SQL-Datensätze aus, die mehreren Bedingungen in derselben Spalte entsprechen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-21 16:08:11296Durchsuche

How to Select SQL Records Matching Multiple Conditions on the Same Column?

Wählen Sie Datensätze anhand mehrerer Übereinstimmungskriterien in derselben Spalte aus

In SQL kann die Auswahl von Datensätzen, die mehrere Bedingungen in derselben Spalte erfüllen, eine Herausforderung sein. Stellen Sie sich das folgende Szenario vor:

Sie haben eine Tabelle, in der Benutzertags gespeichert sind. Jeder Eintrag enthält eine Kontakt-ID, ein Tag und einen Tag-Typ. Sie müssen nur die Kontakt-IDs abrufen, die mit allen im Suchformular angegebenen Tags übereinstimmen.

Die von Ihnen vorgeschlagene Abfrage, bei der Sie mehrere Bedingungen mit demselben Spaltennamen verwenden, wird keine Ergebnisse zurückgeben, da SQL sie als eine einzelne Bedingung interpretiert. Um dieses Problem zu lösen, können Sie eines von zwei Dingen tun:

Methode 1: Verwenden Sie GROUP BY und HAVING

Bei dieser Methode werden die Ergebnisse nach Kontakt-ID gruppiert und anschließend überprüft, ob die Anzahl der eindeutigen Tags, die den Suchkriterien entsprechen, mit der angegebenen Anzahl von Tags übereinstimmt.

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

Methode 2: Verbindung verwenden

Bei dieser Methode werden für jede Bedingung mehrere Verbindungen erstellt.

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

Die Wahl der Methode hängt von der Anzahl der Tags und der erwarteten Anzahl von Übereinstimmungen ab. Bei langen Tag-Listen mit einer geringen Anzahl von Übereinstimmungen ist der erste Ansatz (GROUP BY und HAVING) möglicherweise schneller. Bei kürzeren Tag-Listen mit vielen Übereinstimmungen kann jedoch der zweite Ansatz (Verkettung) eine bessere Leistung erbringen.

Das obige ist der detaillierte Inhalt vonWie wähle ich SQL-Datensätze aus, die mehreren Bedingungen in derselben Spalte entsprechen?. 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