【问题标题】:How to limit one row per user id如何限制每个用户 ID 一行
【发布时间】:2017-08-28 17:04:35
【问题描述】:

我有一张名为employeetimesheets 的表格:

empsheet_id|employee_id|timesheet_status|last_update

该表允许经理访问所有员工时间表。一名员工可以有多个考勤表。我想仅显示每位员工的最新条目。我读过in the manual 我必须用inner join 编写一个groupwise-maximum 子查询和left join,但我不确定如何在这里进行。

到目前为止,这是我的查询:

$sqlempsheets="SELECT * FROM employeetimesheets JOIN employees ON employeetimesheets.employee_id=employees.employee_id WHERE employeetimesheets.timesheet_status='Pending Approval'";
$resultempsheets=mysqli_query($db,$sqlempsheets);

【问题讨论】:

    标签: mysql left-join inner-join groupwise-maximum


    【解决方案1】:

    试试这个:

    select *
    from employeetimesheets t
    join (
        select employee_id,
            max(empsheet_id) as empsheet_id
        from employeetimesheets
        group by employee_id
        ) t2 on t.employee_id = t2.employee_id
        and t.empsheet_id = t2.empsheet_id
    join employees e on t.employee_id = e.employee_id
    where t.timesheet_status = 'Pending Approval';
    

    或者使用left join:

    select t.*, e.*
    from employeetimesheets t
    left join employeetimesheets t2 on t.employee_id = t2.employee_id
        and t.empsheet_id < t2.empsheet_id
    join employees e on t.employee_id = e.employee_id
    where t.timesheet_status = 'Pending Approval'
        and t2.employee_id is null;
    

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2018-06-10
      • 2011-09-05
      • 2016-07-03
      • 1970-01-01
      相关资源
      最近更新 更多