【问题标题】:mysql - group, but show all row of a columnmysql - 组,但显示列的所有行
【发布时间】:2013-01-26 05:30:26
【问题描述】:

我想对字段进行分组,但想显示名为 remain 的列的所有行:

这是未分组的当前输出:

并按组输出:

我在分组时想要这个:

这里是mysql查询:

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    

【问题讨论】:

    标签: mysql sql group-by concat


    【解决方案1】:

    使用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  
    

    其他链接

    【讨论】:

    • 将所有数字转成字符串,Concat_Ws('=', CAST(leave_remain.leave_type_id_leave_type AS VARCHAR(30)), CAST(leave_remain.days AS VARCHAR(30)))
    • 你用的是什么版本的mysql?
    • 哦这是语法错误,应该是CHAR 而不是VARCHAR sqlfiddle.com/#!2/729f7/7
    • 再次感谢您的宝贵时间,愿上帝保佑您
    【解决方案2】:

    试试这个:

    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】:

      为此,我们需要使用 group_contact 以“”分隔。

      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;
      

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多