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

MYSQL Група по колона с 2 реда за всяка група

Ако имате нужда от два произволни идентификатора, използвайте min() и 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 ;

Забележка:Използвате LEFT JOIN и след това агрегиране по колона в втората маса. Това обикновено не е добра идея, защото всички несъвпадения се поставят в NULL група. Освен това вашият WHERE клаузата обръща LEFT JOIN към INNER JOIN така или иначе, така че го оправих. WHERE клауза може или не е необходима, в зависимост от това дали cat_name винаги е NULL .

Ако искате двете най-големи или най-малки - и можете да ги понесете в една и съща колона:

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. Твърде големи POST данни. Намалете данните или увеличете post_max_size

  2. MySQL Вземете списък с дати в месец, година

  3. Изберете брой / дубликати

  4. MySQL Workbench не може да се свърже с локална услуга MySQL на MAC OSX

  5. Как mysql прави обратна разделителна способност на IP адреси?