[英]Group_Concat multple columns in sql
我有兩張桌子。
第一個表稱為 Employee
|EID| EName| Salary | ========================= |1 |A |300 | |2 |B |400 | |3 |O |500 |
第二個表稱為 Employee_Sal_Changes
|EID| Salary_Change_History| year ======================================= |1 |100 |2012 |1 |200 |2013 |1 |300 |2014 |2 |200 |2013 |2 |400 |2014 |3 |100 |2011 |3 |200 |2012 |3 |300 |2013 |3 |500 |2014
在我的前端桌子上,我想展示
id |Salary Change History | ================================= A | 100:2012 | | 200:2013 | | 300:2014 | ================================= B | 200:2013 | | 400:2014 | ================================= O | 100:2011 | | 200:2012 | | 300:2013 | | 400:2014 | =================================
我想將salary_change_history 和year 匹配到EID 並使用循環在前端顯示它們。
為了得到這些,我嘗試使用 group_concat 將它們存儲在一個數組中,但它只獲取 EID = 1 的值
這是后端的查詢
Select
(select Group_Concat(Employee_Sal_Changes.Salary_Change_History),(Group_Concat(Employee_Sal_Changes.year) from Employee_Sal_Changes left join Employee on Employee_Sal_Changes.EID = Employee.EID),
Employee.EName
From Employee_Sal_Changes
有更好的方法還是繼續使用 group_concat?
您可以使用聚合:
select
eid,
group_concat(
year, ':', salary_change_history
order by year
separator '\n'
) salary_change_history
from employee_sal_changes
group by eid
對於每個員工,這會生成一個由回車分隔的<year>:<salary>
值列表。 請注意,您不需要引入employee
表來生成該結果集:另一個表包含所有必要的信息。
如果您還想要員工姓名:
select
s.eid,
e.ename,
group_concat(
s.year, ':', s.salary_change_history
order by s.year
separator '\n'
) salary_change_history
from employee_sal_changes s
inner join employee e on e.eid = s.eid
group by s.eid, e.ename
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.