COUNT în MySQL

Grupare și calcule Toate versiunile MySQL și MariaDB

Numără rândurile sau valorile dintr-o coloană.

Sintaxă
SELECT COUNT(*) FROM tabel;
SELECT COUNT(coloana) FROM tabel;

Ce face COUNT

COUNT(*) numără toate rândurile. COUNT(coloana) numără doar rândurile în care coloana nu este NULL. COUNT(DISTINCT coloana) numără valorile diferite.

Împreună cu GROUP BY, numără separat pentru fiecare grup, de exemplu câți clienți ai în fiecare oraș.

Ce returnează

Un număr întreg (0 dacă nu există rânduri).

Exemple

Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.

CREATE TABLE clienti (
  id INT PRIMARY KEY,
  nume VARCHAR(50) NOT NULL,
  oras VARCHAR(30),
  email VARCHAR(100)
);

INSERT INTO clienti VALUES
  (1, 'Ana Pop', 'Cluj', 'ana@exemplu.ro'),
  (2, 'Bogdan Ionescu', 'Sibiu', NULL),
  (3, 'Cristina Marin', 'Cluj', 'cristina@exemplu.ro'),
  (4, 'Dan Stoica', 'Arad', NULL);

Exemplul 1: Cele trei forme

SELECT COUNT(*), COUNT(email), COUNT(DISTINCT oras) FROM clienti;

Rezultat

+----------+--------------+----------------------+
| COUNT(*) | COUNT(email) | COUNT(DISTINCT oras) |
+----------+--------------+----------------------+
|        4 |            2 |                    3 |
+----------+--------------+----------------------+

Exemplul 2: Clienți din fiecare oraș

SELECT oras, COUNT(*) AS clienti
FROM clienti
GROUP BY oras
ORDER BY clienti DESC, oras;

Rezultat

+-------+---------+
| oras  | clienti |
+-------+---------+
| Cluj  |       2 |
| Arad  |       1 |
| Sibiu |       1 |
+-------+---------+

Greșeli frecvente

  • Folosești COUNT(email) și te miri că numărul este mai mic decât numărul de rânduri. Valorile NULL nu sunt numărate.
  • Citești toate rândurile în PHP doar ca să le numeri. Lasă baza de date să numere cu COUNT(*).

Comenzi înrudite

  • GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.
  • SUM: Adună valorile dintr-o coloană numerică.
  • DISTINCT: Elimină rândurile duplicate din rezultat.