sql >> Databasteknik >  >> RDS >> Mysql

GRUPP VID beställning

Så utifrån kommentarerna och tillägget av SqlFiddle verkar det faktiskt som att du vill skapa ett partitionerat radnummer med prioritet på USA per plattform och sedan välja den första posten. Ett sätt att göra partitionerade radnummer i mysql är att använda variabler här är ett exempel:

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

I grund och botten delar detta upp radnumret efter plattform, beställer USA före något annat territorium och väljer sedan första raden för varje plattform. Den enda frågan/tricket är hur väljer du vilken du ska returnera när USA inte är tillgängligt för plattformen, helt enkelt den stigande alfabetiska ordningen för territory_id?




  1. Potentiella fall av att byta teckenuppsättning i MySQL?

  2. exportera db-objekt för versionskontroll

  3. Hur man förhindrar konstiga tecken från att dyka upp på webbsidor

  4. Hur kopierar man en databas med mysqldump och mysql i Python?