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

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

Barbara Streisand
Freigeben: 2025-01-21 16:11:10
Original
945 Leute haben es durchsucht

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

Wählen Sie Datensätze aus, die mehreren Bedingungen in derselben Spalte in SQL entsprechen

SQL-Abfragen müssen manchmal Datensätze abrufen, die mehreren Bedingungen in derselben Spalte entsprechen. Allerdings führt die einfache Verwendung mehrerer WHERE-Klauseln mit denselben Spalten nicht immer zu den erwarteten Ergebnissen. Betrachten Sie das folgende Beispiel:

Wir verfügen über eine Datenbanktabelle mit Kontakten und Flags, die den Status jedes Kontakts anzeigen. Die Tabelle enthält die folgenden Daten:

ID contactid flag flag_type
118 99 Volunteer 1
119 99 Uploaded 2
120 100 Via Import 3
121 100 Volunteer 1
122 100 Uploaded 2

Ziel ist es, nur Kontakt-IDs zurückzugeben, die sowohl den Flag-Bedingungen „Freiwilliger“ als auch „Hochgeladen“ entsprechen. Verwenden Sie die folgende Abfrage:

<code class="language-sql">SELECT contactid
WHERE flag = 'Volunteer'
AND flag = 'Uploaded'</code>
Nach dem Login kopieren

Es werden keine Ergebnisse zurückgegeben, da jede Bedingung nur nach einem bestimmten Flag-Wert prüft. Um die erforderlichen Daten abzurufen, müssen wir eine alternative Methode verwenden.

Verwenden Sie GROUP BY und HAVING

Eine Lösung besteht darin, die Klauseln GROUP BY und HAVING zu verwenden. Die folgende Abfrage gruppiert die Ergebnisse nach Kontakt-ID und zählt die Anzahl der übereinstimmenden Flag-Werte:

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

Kontakte mit der Flagge „Freiwilliger“ und „Hochgeladen“ werden als 2 gezählt. Die HAVING-Klausel filtert dann die Ergebnisse, um nur diese Kontakte einzuschließen.

Verbindung verwenden

Eine andere Möglichkeit besteht darin, Verbindungen zu nutzen. Die folgende Abfrage führt einen Self-Join für die Tabelle „your_table“ durch:

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

Diese Abfrage erstellt eine temporäre Tabelle mit der Kombination aller Kontakte, die sowohl die Flaggen „Freiwilliger“ als auch „Hochgeladen“ haben. Die WHERE-Klausel filtert dann die Ergebnisse, um nur Kontakte einzubeziehen, die diese beiden Bedingungen erfüllen.

Methodenauswahl

Die beste Möglichkeit, Datensätze mit mehreren Bedingungen in derselben Spalte auszuwählen, hängt von der Größe und Struktur Ihrer Daten ab. Bei großen Datensätzen mit langen Listen übereinstimmender Kriterien sind die Lösungen GROUP BY und HAVING möglicherweise effizienter. Bei kleinen Datensätzen mit einer kürzeren Liste übereinstimmender Kriterien ist die JOIN-Lösung möglicherweise schneller.

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