2015-08-20 107 views
1

如何在第一行中組合具有相同值的行,並在行中放置null或空格而不影響select語句中的GROUP BY主題?看看我正在努力實現並幫助我。 enter image description here如何在mysql中結合具有相同值的行

我試圖查詢:

SELECT regd, GROUP_CONCAT(name order by name SEPARATOR ' ') as name, 
subject, sc, fm FROM table GROUP BY regd, subject 
+0

你爲什麼要「在行中放置空或空格」?你想要達到什麼目的? – rlanvin

+0

我想以這種格式導出。 –

回答

2

首先,我建議你在代碼中,而不是在數據庫級別處理這個問題!

但是,如果您絕對必須在查詢中完成所有操作,則可以嘗試ranking over partition,其中regd列爲分區。您的預期產出在每個regd內都有相當隨意的排序。

這個查詢可以通過subject每個regd內訂購:

select t.regd, 
case when r=1 then t.name else null end as name, 
t.subject, 
t.sc,t.fm 
from 
(
select tt.*, 
case when regd = @curRegd then @rank := @rank +1 else @rank:=1 end as r, 
@curRegd := tt.regd 
from table tt 
join (SELECT @curRegd := 0,@rank:=0) r 
order by regd,subject 
) t 

最後,根據您存儲的數據例子,好像沒有聚集即GROUP BY條款,有必要在這裏。

+1

不錯的答案,看起來像可以工作,但我非常同意在代碼中而不是在MySQL中處理。 – rlanvin

+0

非凡。這正是我正在尋找的。非常感謝你。這是一個很大的幫助。 –

相關問題