2017-04-26 72 views
0

嘗試排序時試圖找出一些邏輯時遇到問題。甚至回到Excel來制定簡單的邏輯。在MySQL中排序/

What I have is :- 
ColA ColB 
100022 33 
100022 36 
100024 28 
100024 32 
100024 41 
100024 52 
100026 38 
100038 28 
100038 42 
100038 48 
100038 59 

我想要做排序通過柱B(heightest到最低),但我不想列A爲具有相同的值下,以每other.Sorting上述將有33 & 36(與100022)彼此相鄰(和42 & 48),100038彼此相鄰。只要列B按照最佳排序,它可以從最高到最低,並且列A的值永遠不會彼此相鄰(除非絕對必要),我很高興。

理想情況下我是一個邏輯的是這樣結束了之後..

100024 28 
100038 28 
100022 33 
100024 32 
100022 36 
100026 38 
100038 42 
100024 41 
100038 48 
100024 52 
100038 59 

任何幫助或想法,將不勝感激。如果要強制執行,從ColA沒有兩個值出現相鄰

謝謝 布拉德

+0

出現b進行排序大致 '低到高' – Strawberry

+0

什麼是柱A之間的關係, Col B?如果它們不相互關聯,爲什麼我們必須將它們存儲在同一個表中並嘗試排序? –

+0

哪所學校的作業? – MarmiK

回答

0

,那麼一個選擇是行號在給定的ColA塊分配給每個值,然後以保證相鄰的值不會發生。

SET @row_number = 0; 
SET @ColA = NULL; 

SELECT t.ColA, t.ColB 
FROM 
(
    SELECT 
     @row_number:=CASE WHEN @ColA = ColA THEN @row_number + 1 ELSE 1 END AS rn, 
     @ColA:=ColA AS ColA, 
     ColB 
    FROM 
     yourTable 
    ORDER BY ColA, ColB DESC 
) t 
ORDER BY t.rn, t.ColB DESC 

你在你的疑問,希望ColB從最高排序,以最低的,這是我做提及。如果您想升序排列,只需從上述查詢中刪除DESC即可。

輸出:

enter image description here

演示在這裏:

Rextester