sql >> Databáze >  >> RDS >> Mysql

Připojte dvě tabulky mysql, jeden až mnoho vztahů

Musíte použít GROUP BY vysvětlit, na základě jakých seskupení počítat. Bez GROUP BY získáte pouze jednu skupinu celé sady výsledků, jak jste viděli.

Ve standardním SQL je nutné zahrnout do GROUP BY klauzule každý neagregovaný výraz, který je součástí SELECT klauzule, ale MySQL vám umožní vyhnout se tomu, že to neuděláte, a umožní vám výraz, jako je následující. (Přinejmenším, když ne v přísném režimu; nejsem si jistý, zda přísný režim posiluje tento požadavek, aby odpovídal standardnímu SQL)

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

Za předpokladu, že items.id je primární klíč této tabulky, a proto se nezobrazí ve více než jednom řádku items , mělo by to mít požadovaný účinek.

Jakmile zavedete GROUP BY je důležité pochopit rozdíl mezi WHERE a HAVING doložky. První použije podmínku před skupina a agregace se použijí, zatímco druhé se použijí potom . To znamená, že musíte použít HAVING pokud chcete provést podmínku založenou na tomto počtu; WHERE klauzule ve vašem původním příkladu bude platit před agregací, takže výsledkem bude počet bodů vytvořených po daném datu.



  1. Práce se sloupci MySQL TIMESTAMP v SQL Server

  2. Ukládání urdských znaků v MySQL

  3. Vytvořte uloženou proceduru v SQL Server 2017

  4. Jaký je význam <> v dotazu mysql?