Mysql
 sql >> Database >  >> RDS >> Mysql

GRUPPO PER ordinazione

Quindi dai commenti e dall'aggiunta di SqlFiddle sembra effettivamente che tu voglia creare un numero di riga partizionato con una precedenza su US per piattaforma e quindi selezionare il primo record. Un modo per eseguire i numeri di riga partizionati in mysql è utilizzare le variabili, ecco un esempio:

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

Fondamentalmente questo suddivide il numero di riga per piattaforma, ordina gli Stati Uniti prima di qualsiasi altro territorio e quindi seleziona la prima riga per ogni piattaforma. L'unica domanda/trucco è come si fa a scegliere quale restituire quando gli Stati Uniti non sono disponibili per la piattaforma semplicemente l'ordine alfabetico crescente del territorio_id?