mysql - 如何限制每个用户 ID 一行

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

我有一张名为“employeetimesheets”的表格:

empsheet_id|employee_id|timesheet_status|last_update

该表允许经理访问所有员工的考勤表。一名员工可以有多个考勤表。我想显示每个员工的最新条目。我读过in the manual我必须编写一个分组最大子查询和带有inner joinleft 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);

最佳答案

试试这个:

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';

或者使用左连接:

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;

关于mysql - 如何限制每个用户 ID 一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43191268/

相关文章:

MySQL 复杂的 SQL 查询需要 2 列来提供基于另一列的值的 SUM 总计(如果 = 是),同时分组在一起

mysql - 将不同计数显示为每个返回值的单独列

mysql - cakephp mysql,自动增量 id 或 varchar 作为主键

php - 将一个 SQL 表中的最高值连接到另一个 SQL 表

php - 复杂查询与学说结合

MySQL 查询 - 如何使用 GROUP BY 和 WHERE 条件获取 SUM 并使用 LEFT OUTER JOIN?

Linq 到实体 Left Join

mySQL:截断所有表的命令

php - IOS 连接到 PHP webserver 插入数据到 mysql

java - 使用 jpaTemplate 进行联接查询非常慢