Heim >Datenbank >MySQL-Tutorial >Wie zähle ich bedingte Instanzen in MySQL-Abfragen mit SUM() genau?
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!