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

Използване на count в клауза where:невалидно използване на групова функция

Можете да използвате само агрегатни функции като COUNT() в HAVING клауза или в SELECT клауза, когато GROUP BY се използва. WHERE клаузата работи върху редове, които идват от FROM клауза. Не е извършено агрегиране, така че няма начин агрегатните функции да имат смисъл.

Изглежда, че това, което искате да направите, е да намерите от таблицата ЗАПИСАНЕ всички студенти, които се появяват повече от веднъж. Тогава искате да получите повече подробности за тези ученици. Има потенциално много начини да направите това, но бих препоръчал подзаявка.

SELECT s.*
  FROM student AS s
  JOIN (
    SELECT e.sno
      FROM enroll AS e
     GROUP BY e.sno
    HAVING COUNT(*) > 1
  ) AS e
    ON e.sno = s.sno
 ORDER BY s.age DESC
 LIMIT 10

Подзаявката там след JOIN прави това първо изчисление (които студенти имат няколко реда в РЕГИСТРАЦИЯ) и основно създава псевдотаблица със списък на студентски идентификатори. Тъй като правим вътрешно свързване, само редове в таблицата STUDENT, които имат sno в нашата подзаявка ще се покаже. За това основно се грижи ON клауза.

Тъй като казахте в коментар, че искате да можете да прилагате допълнителни условия към учениците, добавих в примерен код, където това ще се случи. Тъй като тази информация идва от таблицата STUDENT, това може да се направи извън подзаявката. Не посочихте конкретно какво означава „най-възрастните ученици“, така че просто предположих, че искате 10-те най-възрастни да бъдат записани в няколко курса. Трябва да можете да коригирате според нуждите си.

Уведомете ме, ако нещо от това няма смисъл и ще се опитам да обясня по-подробно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя множество селекции на квадратчета за отметка към моята база данни с помощта на php

  2. База данни/SQL:Как да съхранявам данни за дължина/ширина?

  3. Направете pdo::query статичен

  4. Как мога да направя три присъединявания към таблицата в заявка UPDATE?

  5. Работа с целостта на базата данни