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

Присъединете две таблици mysql, връзка едно към много

Трябва да използвате GROUP BY за да обясните въз основа на какви групи да се брои. Без GROUP BY получавате само една група от целия набор от резултати, както видяхте.

В стандартния SQL е необходимо да се включи в GROUP BY клауза всеки неагрегиран израз, който е включен в SELECT клауза, но MySQL ви позволява да не правите това, позволявайки израз като следния. (Поне, когато не е в строг режим; не съм сигурен дали стриктният режим засилва това изискване, за да съответства на стандартния SQL)

SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`

Ако приемем, че items.id е първичният ключ на тази таблица и затова няма да се появи в повече от един ред items , това трябва да има желания ефект.

След като въведете GROUP BY важно е да разберете разликата между WHERE и HAVING клаузи. Първият прилага условието преди групата и агрегатите се прилагат, докато последното се прилага след това . Това означава, че трябва да използвате HAVING ако искате да направите условно въз основа на този брой; WHERE Клаузата в първоначалния ви пример ще се прилага преди агрегата, така че резултатът ще бъде броят на точките, създадени след дадена дата.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да постигна функционалност initcap в MySQL?

  2. @OneToMany грешки в MySQL:Не може да се изтрие или актуализира родителски ред:ограничение на външния ключ е неуспешно

  3. Как да комбинирам две MySQL колони в една колона?

  4. Как да чета от полето за дата и час на mysql

  5. Наистина ли сортирането в InnoDB е толкова бавно?