这两句 SQL 查询语句的作用是获取指定员工在指定公司下的合同信息中的最新一条数据。

第一句 SQL 查询语句中,通过子查询获取指定员工在指定公司下的合同信息中的最新一条数据的 id,然后通过外层查询再次筛选出 id 大于等于最新 id 的记录,并按 id 升序排序,最后限制只返回一条数据。

SELECT *
FROM (
  SELECT *
  FROM hrbase_mark_contract
  WHERE work_id = '员工工号' -- 替换为实际的员工工号
  ORDER BY id ASC
) AS a
WHERE id >= (
  SELECT MAX(id)
  FROM hrbase_mark_contract
  WHERE work_id = '员工工号' -- 替换为实际的员工工号
    AND company_code = '公司代码' -- 替换为实际的公司代码
)
ORDER BY id ASC
LIMIT 1;

第二句 SQL 查询语句中,通过子查询获取指定员工在指定公司下的合同信息中的每一条记录的 id 大于等于当前记录 id 的数量,然后通过外层查询筛选出这个数量等于总记录数的记录,并按 id 降序排序,最后限制只返回一条数据。这样做是为了获取最新的合同信息。

SELECT *
FROM (
    SELECT *
    FROM hrbase_mark_contract
    WHERE work_id = 'xxx' -- 员工工号
    ORDER BY id ASC
) AS a
WHERE (
    SELECT COUNT(*)
    FROM hrbase_mark_contract
    WHERE work_id = a.work_id
      AND company_code = 'xxx' -- 公司代码
      AND id >= a.id
) = (
    SELECT COUNT(*)
    FROM hrbase_mark_contract
    WHERE work_id = a.work_id
      AND id >= a.id
)
ORDER BY id DESC
LIMIT 1;

本文介绍了两种获取最新合同信息的 SQL 查询语句,您可以根据实际情况选择合适的方法。

SQL 查询最新合同信息:两种方法详解

原文地址: https://www.cveoy.top/t/topic/B8K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录