You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定员工ID与三张表,如何在员工属full_time_contract时设置num = num + 1?

实现方案

核心逻辑是验证指定员工是否存在对应的全职合同记录(通过staff→contract→full_time_contract的关联关系能找到匹配数据),若存在则将变量num加1。以下是主流数据库的具体实现:

MySQL 版本

-- 假设已声明变量num,且指定目标员工ID为@target_staff_id
SET @target_staff_id = 123; -- 替换为实际指定的staff_id
SET @num = 0; -- 示例初始值

IF EXISTS (
    SELECT 1
    FROM staff s
    JOIN contract c ON s.staff_id = c.staff_id
    JOIN full_time_contract f ON c.contract_id = f.contract_id
    WHERE s.staff_id = @target_staff_id
) THEN
    SET @num = @num + 1;
END IF;

SQL Server 版本

-- 假设已声明变量num,且指定目标员工ID为@target_staff_id
DECLARE @target_staff_id INT = 123; -- 替换为实际指定的staff_id
DECLARE @num INT = 0; -- 示例初始值

IF EXISTS (
    SELECT 1
    FROM staff s
    INNER JOIN contract c ON s.staff_id = c.staff_id
    INNER JOIN full_time_contract f ON c.contract_id = f.contract_id
    WHERE s.staff_id = @target_staff_id
)
BEGIN
    SET @num = @num + 1;
END

通用简化写法

无需条件判断,直接通过统计匹配记录数实现累加:

-- 以MySQL为例,其他数据库语法类似
SET @num = @num + (
    SELECT COUNT(DISTINCT s.staff_id)
    FROM staff s
    JOIN contract c ON s.staff_id = c.staff_id
    JOIN full_time_contract f ON c.contract_id = f.contract_id
    WHERE s.staff_id = @target_staff_id
);

这里用COUNT(DISTINCT s.staff_id)是为了避免员工有多个全职合同时重复累加,确保仅加1次。

内容的提问来源于stack exchange,提问作者심준호

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:45:50