下面两个sql的目的是什么?作用一致吗?相比哪一条更好?
sql1:
<select id="selMarkContractSys" resultMap="sysMarkContract">
SELECT
c.*
FROM
hrbase_mark_contract c
INNER JOIN
(SELECT
work_id,
MAX(id) AS max_id
FROM
hrbase_mark_contract
WHERE
company_code != #{company_code}
AND work_id = #{work_id}
GROUP BY
work_id
) t ON c.work_id = t.work_id AND c.id >= t.max_id
WHERE
c.work_id = #{work_id}
AND c.company_code = #{company_code}
ORDER BY
c.id ASC
LIMIT 1
</select>
sql2:
<select id="selMarkContractSys" resultMap="sysMarkContract">
SELECT
*
FROM
(
SELECT
*
FROM
hrbase_mark_contract
WHERE
work_id = #{work_id}
ORDER BY
id DESC
) AS a
WHERE
company_code = #{company_code}
AND (
id = (
SELECT
MIN(id)
FROM
hrbase_mark_contract
WHERE
work_id = #{work_id}
AND id > (
SELECT
MAX(id)
FROM
hrbase_mark_contract
WHERE
company_code != #{company_code}
AND work_id = #{work_id}
)
)
OR (
SELECT
MAX(id)
FROM
hrbase_mark_contract
WHERE
company_code != #{company_code}
AND work_id = #{work_id}
) IS NULL
)
LIMIT 1
</select>