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

GROUP BY objednávání

Takže z komentářů a přidání SqlFiddle to vlastně vypadá, že chcete vytvořit rozdělené číslo řádku s prioritou v USA na platformu a pak vybrat první záznam. Jedním ze způsobů, jak dělat rozdělená čísla řádků v mysql, je použít proměnné, zde je příklad:

SELECT
  territory_id
  ,platform_type_id
  ,store_url
FROM
( SELECT
    *
    ,@PlatFormRowNum:= IF(@prevplatform = platform_type_id, @PlatFormRowNum + 1, 1) as PlatformRowNum
    ,@prevplatform:= platform_type_id
  FROM
    main_itemmaster m
    CROSS JOIN (SELECT @prevplatform:='',@PlatFormRowNum=0) var
  ORDER BY
    platform_type_id
    ,CASE WHEN territory_id = 'US' THEN 0 ELSE 1 END
    ,territory_id
) t
WHERE
  t.PlatformRowNum = 1
ORDER BY
  t.platform_type_id

SQL Fiddle:http://sqlfiddle.com/#!9/81c3b6/12

V podstatě to rozdělí číslo řádku podle platformy, objedná USA před jakýmkoli jiným územím a poté vybere první řadu pro každou platformu. Jedinou otázkou/trikem je, jak si vybrat, kterou chcete vrátit, když USA nejsou pro platformu dostupné, jednoduše vzestupné abecední pořadí Territorio_id?




  1. Načítání a zobrazování dat pro každého registrovaného uživatele v PHP pomocí PDO

  2. Použití JShell v Javě 9 v NetBeans 9.0, část 3

  3. PHP/MySql vyhledávací pole s polem

  4. Otevřete kurzor pro název dynamické tabulky v proceduře PL/SQL