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

MYSQL Seskupit po sloupcích se 2 řádky pro každou skupinu

Pokud potřebujete dvě libovolná ID, použijte min() a max() :

SELECT c.`cat_name` , min(id), max(id)
FROM `info` i INNER JOIN
     `category` c
     ON i.`cat_id` = c.`cat_id`
WHERE c.`cat_name` IS NOT NULL
GROUP BY c`.`cat_name`
ORDER BY c.`cat_name` ASC ;

Poznámka:Používáte LEFT JOIN a poté agregaci podle sloupce v druhé stůl. To obvykle není dobrý nápad, protože neshody jsou všechny umístěny v NULL skupina. Dále vaše WHERE klauzule otočí LEFT JOIN do INNER JOIN každopádně, tak jsem to opravil. WHERE klauzule může nebo nemusí být nezbytná v závislosti na tom, zda cat_name je vždy NULL .

Pokud chcete dva největší nebo nejmenší -- a snesete je mít ve stejném sloupci:

SELECT c.`cat_name`,
       substring_index(group_concat id order by id), ',', 2) as ids_2 
FROM `info` i INNER JOIN
     `category` c
     ON i.`cat_id` = c.`cat_id`
WHERE c.`cat_name` IS NOT NULL
GROUP BY c`.`cat_name`
ORDER BY c.`cat_name` ASC ;


  1. Formátovat datum v MySQL, aby se vrátil název měsíce, rok

  2. MySQL agreguje po měsících s průběžným součtem

  3. Vypnutí a spuštění instance Oracle

  4. Nakonfigurujte Lucene.Net s SQL Server