问题
I want to group fields but want to show all row of a column called remain
:
here is current output without grouping:

And output with group:

And I want This when I group:

Here is mysql query:
SELECT staff.name,
staff.designation_id_designation,
staff.status_id_status,
Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) AS
remain
FROM staff INNER JOIN
leave_remain ON staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.name
回答1:
use GROUP_CONCAT
SELECT staff.name,
staff.designation_id_designation,
staff.status_id_status,
GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days)) AS remain
FROM staff
INNER JOIN leave_remain
ON staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.name, staff.designation_id_designation, staff.status_id_status
- SQLFiddle Demo
other Link(s)
- MySQL GROUP_CONCAT
回答2:
Try this:
SELECT staff.name,
staff.designation_id_designation,
staff.status_id_status,
GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) SEPARATOR ' ') AS remain
FROM staff INNER JOIN
leave_remain ON staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.designation_id_designation,
staff.name,
staff.status_id_status;
回答3:
TRy this for this we need to use group_contact seperate by ' '.
SELECT staff.name,
staff.designation_id_designation,
staff.status_id_status,
GROUP_CONCAT(Concat_Ws('=', leave_remain.leave_type_id_leave_type, leave_remain.days) SEPARATOR ' ') AS remain
FROM staff
INNER JOIN
leave_remain
ON
staff.id_staff = leave_remain.staff_id_staff
GROUP BY staff.designation_id_designation,
staff.name,
staff.status_id_status;
来源:https://stackoverflow.com/questions/14806631/mysql-group-but-show-all-row-of-a-column