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

Mysql group_concat limit řádků v seskupení

MySQL tento druh dotazu neusnadňuje, ale jedním (sice ne moc hezkým) řešením je použít proměnnou, která každému řádku přiřadí pořadové číslo na cíl a pouze seskupí podle čísla řádku celé číslo děleno 2, aby se dostali dvě čísla v každá skupina;

SELECT dest, GROUP_CONCAT(port ORDER BY rank) ports
FROM (
  SELECT dest, port, ( 
      CASE dest WHEN @curDest 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curDest := dest END) rank
  FROM tb_port a
  JOIN tb_rule c ON a.id = c.id_port
  JOIN tb_dest b ON b.id = c.id_dest, 
    (SELECT @curRow := 0, @curDest := '') r
  ORDER BY dest
) z
GROUP BY FLOOR(rank/2),dest
ORDER BY dest, MIN(rank)

Otestujte SQLfiddle .



  1. MySQL- Proč mi LAST_INSERT_ID() nefunguje?

  2. CloudFormation:Šablona RDS Mysql pro vytvoření DB, tabulek, uživatelů nebo schématu načtení

  3. je možné mít generátor alfanumerické sekvence v sql

  4. PHP a MySQL nejlepší způsob, jak počítat zobrazení stránek pro dynamické stránky