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

mysql count не работи правилно?

Трябва да добавите всички колони, които избирате в SELECT клауза с изключение на c.USER_ID към GROUP BY клауза, като тази:

group by c.ID, c.otherfields, l.title,..

РЕДАКТИРАНЕ: Мисля, че следното ще работи правилно:

SELECT count(c.USER_ID) as total_commments_user , 
       c.*, u.NAME, l.TITLE as LINK_TITLE, u.AUTH_IMG
FROM `PLD_COMMENT` c 
left outer join `PLD_USER` u ON (u.ID = c.USER_ID) 
left outer join `PLD_LINK` l ON (l.ID = c.ITEM_ID) 
group by c.ITEM_ID, c.USER_ID
ORDER BY c.USER_ID, l.ID 

Пример: Ако имате следните примерни данни:

  • PLD_LINK:

    ID   STATUS   TITLE    
    1      1      title1
    2      2      title2
    
  • PLD_USER:

    ID     NAME
    8    Mahmoud
    9     Ahmed
    
  • PLD_COMMENT:

    ID   ITEM_ID USER_ID   STATUS
    4      1        8        1
    5      1        8        1
    6      1        8        1
    7      2        8        2
    8      2        8        2
    9      1        9        1
    10     1        9        1
    

Случай 1:потребителят Mahmoud се показва два пъти:

След това предишната заявка ще ви даде броя на коментарите за всеки потребител и за всеки елемент, както следва:

total_commments_user  ID  ITEM_ID   USER_ID   Name
         3            4      1         8     Mahmoud
         2            7      2         8     Mahmoud
         2            9      1         9      Ahmed

Забележете, че потребителят Mahmoud се показва два пъти с различен брой, тъй като има различен Item_Id .

Случай 2:потребителят Mahmoud се показва само веднъж:

Ако искате да получите броя на коментарите за всеки потребител за всички елементи, тогава ще трябва да групирате само по USER_ID и ще получите:

total_commments_user  ID  ITEM_ID   USER_ID   Name  
         5            4      1         8     Mahmoud
         3            9      1         9      Ahmed

Както можете да видите сега потребителят Mahmoud се показва само веднъж, тъй като сме записали Item_Id .

След това можете да филтрирате по статус или каквото и да било.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо MySQL позволява да се актуализира колона NOT NULL до NULL?

  2. Laravel eloquent не актуализира колона JSON:Преобразуване на масив в низ

  3. MySQL INSERT SELECT - Дублиращи се редове

  4. Проблеми с показването на изображения на петна

  5. Изберете N произволни записа на група