t_no name value
1 a 45
1 b 23
1 c 5
1 a 12
1 b 99
1 c 6
我需要證明我上面的表作爲如何在列組重複行值
no name value1 value2
1 a 45 12
1 b 23 99
1 c 5 6
t_no name value
1 a 45
1 b 23
1 c 5
1 a 12
1 b 99
1 c 6
我需要證明我上面的表作爲如何在列組重複行值
no name value1 value2
1 a 45 12
1 b 23 99
1 c 5 6
不能在MySQL創建單獨動態列,無論是在腳本語言,也可以使用GROUP_CONCAT讓他們在一列:
SELECT to_no, name, GROUP_CONCAT(value)
FROM table GROUP BY to_no, name
結果:
no name value
1 a 45,12
1 b 23,99
1 c 5,6
謝謝你。需要在列中列出重複的數據。我們可以嘗試在存儲過程 – user2587477
中查找可以添加的副本,在GROUP BY ...之後,具有count(*)> 1 – Marek
MySQL沒有透視功能,但您可以使用具有CASE表達式的聚合函數。既然你有多個值的每個t_no
和name
,那麼你可以使用用戶定義的變量行號分配給每個組的值:
select t_no, name,
max(case when rn=1 then value end) value1,
max(case when rn=2 then value end) value2
from
(
select t_no, name, value,
@rn:=case when @prev=t_no and @c=name then @rn else 0 end +1 rn,
@prev:=t_no,
@c:=name
from yourtable
cross join (select @rn:=0, @prev:=0, @c:=null) c
order by t_no, name
) d
group by t_no, name
order by t_no, name;
這就是所謂的透視表,但你無法在您的示例中執行此操作,因爲您沒有明確的標準來確定哪個值屬於哪個列。 「First」在關係數據庫中沒有意義,因爲集合沒有隱含的順序。 –