Mysql
 sql >> база данни >  >> RDS >> Mysql

Преброяване на множество редове в MySQL в една заявка

SELECT item_id, operation, COUNT(*) 
FROM stats 
WHERE operation IN ('view','purchase','download') 
GROUP BY item_id, operation

Ще върне таблица с един ред за item_id и операция , съдържаща три колони:item_id, типа на операцията и броя на редовете с този item_id.

1 view 3
1 purchase 5
2 download 7
3 download 1

Можете да пропуснете WHERE, ако искате всички item_id, и можете да поръчате в COUNT(*), за да получите най-популярния или нещо подобно. Зависи какво търсите или как използвате данните.

Ако искате колоните една до друга , използвайте IF:

SELECT s1.item_id, SUM( IF( s1.operation = 'view', 1, 0 ) ) views, SUM( IF( s1.operation = 'download', 1, 0 ) ) downloads, SUM( IF( s1.operation = 'purchase', 1, 0 ) ) purchases
FROM stats s1
GROUP BY s1.item_id

item_id | views | downloads | purchases
1 | 3 | 0 | 5
2 | 0 | 7 | 0
3 | 0 | 1 | 0



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате „having“ с paginate в колоната на връзката в laravel 5

  2. Изберете MYSQL редове, но редове в колони и колона в редове

  3. PHP + MySQL опашка

  4. MySQL UPDATE и SELECT с един проход

  5. PHP асинхронна mysql-заявка