Heim >Datenbank >MySQL-Tutorial >Wie zähle ich bedingte Instanzen in MySQL-Abfragen mit SUM() genau?

Wie zähle ich bedingte Instanzen in MySQL-Abfragen mit SUM() genau?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-28 09:29:11820Durchsuche

How to Accurately Count Conditional Instances in MySQL Queries Using SUM()?

Kommentare mit IF-Bedingung in MySQL-Abfragen zählen

In bestimmten Szenarien ist es notwendig, bestimmte Instanzen aus einer Datenbanktabelle basierend auf a zu zählen vordefinierte Bedingung. Beispielsweise müssen Sie möglicherweise die Anzahl der Kommentare zählen, die mit Nachrichtenartikeln verknüpft sind, deren Anzeige genehmigt wurde. Ein häufiges Problem tritt jedoch auf, wenn versucht wird, diese Aufgabe mit der Funktion COUNT() in MySQL auszuführen.

Das Problem mit COUNT()

Die Funktion COUNT() in MySQL gibt die Anzahl der Zeilen zurück, die eine bestimmte Bedingung erfüllen. Beim Zählen bestimmter Instanzen, wie z. B. genehmigter Kommentare, kann es jedoch zu ungenauen Ergebnissen kommen, indem ein Standardwert von 1 zugewiesen wird, selbst wenn keine übereinstimmenden Zeilen vorhanden sind.

Um dieses Problem zu beheben und eine genaue Zählung zu erhalten, ist es ratsam die Funktion SUM() anstelle von COUNT() zu verwenden.

Lösung mit SUM()

Die Funktion SUM() summiert die Werte eines angegebenen Ausdrucks über alle Zeilen in einer Tabelle hinweg. In Kombination mit einer IF-Bedingung kann die Anzahl der Instanzen, die ein bestimmtes Kriterium erfüllen, genau gezählt werden.

Zum Beispiel nutzt die folgende MySQL-Abfrage die SUM()-Funktion, um genehmigte Kommentare für Nachrichtenartikel zu zählen:

SELECT
    ccc_news . * ,
    SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments
FROM
    ccc_news
    LEFT JOIN
        ccc_news_comments
    ON
        ccc_news_comments.news_id = ccc_news.news_id
WHERE
    `ccc_news`.`category` = 'news_layer2'
    AND `ccc_news`.`status` = 'Active'
GROUP BY
    ccc_news.news_id
ORDER BY
    ccc_news.set_order ASC
LIMIT 20

Durch den Einsatz der SUM()-Funktion stellt diese Abfrage sicher, dass die Kommentarspalte die Anzahl der genehmigten Kommentare genau anzeigt und verhindert so die fehlerhafte Zuweisung eines Standardwerts von 1 zu Zeilen ohne Übereinstimmung Kommentare.

Das obige ist der detaillierte Inhalt vonWie zähle ich bedingte Instanzen in MySQL-Abfragen mit SUM() genau?. 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