Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL Grupuj po kolumnie z 2 rzędami dla każdej grupy

Jeśli potrzebujesz dwóch dowolnych identyfikatorów, użyj min() i 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 ;

Uwaga:używasz LEFT JOIN a następnie agregowanie według kolumny w drugiej stół. Zwykle nie jest to dobry pomysł, ponieważ wszystkie niedopasowane elementy są umieszczane w NULL Grupa. Ponadto Twój WHERE klauzula zmienia LEFT JOIN do INNER JOIN w każdym razie, więc to naprawiłem. WHERE klauzula może być konieczna lub nie, w zależności od tego, czy cat_name jest zawsze NULL .

Jeśli chcesz mieć dwie największe lub najmniejsze -- i możesz mieć je w tej samej kolumnie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Generuj mysql erd z połączeniami

  2. Wybierz wiele sum za pomocą zapytania MySQL i wyświetl je w osobnych kolumnach

  3. Uzyskaj konkretny wpis w przypadku zduplikowanego wpisu

  4. XCode, uwierzytelnianie i NSUserDefaults

  5. Nie można uruchomić serwera MySQL - Proces kontrolny zakończony z kodem błędu