2015-10-17 71 views
0

我有一張表,我正在查詢所有字段。這部分運作良好。但是,它不顯示所需的輸出。我打算讓行顯示不同的類別。換句話說,避免將相同的類別背對背顯示。我試過使用DISTINCT,但沒有效果。是否有基於category的顯示屏。我如何實現下面的輸出? SQLFIDDLE根據「類別」字段顯示行

所需的輸出

game_id game_name     category 
------- --------------------------- -------- 
634266 street fighter v   fighting 
684244 minecraft     adventure 
779343 call of duty modern warfare fps 
858168 need for speed - rivals  racing 
819837 mortal kombat x    fighting 
983565 assassin's creed syndicate adventure 
840832 counter-strike    fps 
858768 gran turismo    racing 

電流輸出

game_id game_name     category 
------- --------------------------- -------- 
634266 street fighter v   fighting 
684244 minecraft     adventure 
779343 call of duty modern warfare fps 
819837 mortal kombat x    fighting 
840832 counter-strike    fps 
858168 need for speed - rivals  racing 
858768 gran turismo    racing 
983565 assassin's creed syndicate adventure 
+1

。 。你應該在問題中澄清你想循環的類別。否則,很難弄清楚你正在嘗試做什麼。 –

回答

0

我明白了,你希望每個類別通過他們出現一次,然後循環。這是一種方法。枚舉類別,然後按枚舉進行排序:

select vg.game_id, vg.game_name, vg.category 
from (select vg.*, 
      (@rn := if(@c = vg.category, @rn + 1, 
         if(@c := vg.category, 1, 1) 
         ) 
      ) as rn 
     from videogames vg cross join 
      (select @c := '', @rn := 0) params 
     order by vg.category, vg.game_id 
    ) vg 
order by rn, 
     field(category, 'fighting', 'adventure', 'fps', 'racing'); 

SQL小提琴是here

+0

太棒了,如果我可以說50個類別?我應該添加任何額外的字段來簡化這個查詢嗎? – MaryCoding

+0

@MaryCoding。 。 。 50類別的唯一問題是最後一類。如果你按照字母順序對它們感到滿意,那麼你可以省略'field()',並使用'category'。 –