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

GRUPPE VED bestilling

Så ud fra kommentarerne og tilføjelsen af ​​SqlFiddle ser det faktisk ud til, at du vil oprette et partitioneret rækkenummer med en prioritet på USA pr. platform og derefter vælge den første post. En måde at lave partitionerede rækkenumre på i mysql er at bruge variabler her er et eksempel:

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

Grundlæggende opdeler dette rækkenummeret efter platform, bestiller USA før ethvert andet territorium og vælger derefter den første række for hver platform. Det ene spørgsmål/trick er, hvordan vælger du, hvilken du vil returnere, når USA ikke er tilgængelig for platformen, blot den stigende alfabetiske rækkefølge af territory_id?




  1. Få nylige tråde, som brugeren ikke deltog i

  2. Hvordan bruger du en BIGINT som en auto-inkrementerende primærnøgle i Laravel 4

  3. VBA-basisklasse og afledt objekt-2

  4. MySQL fremmednøgle for at tillade NULL?