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

如何用单条SQL获取含YEEF_SAFE_HARBOR_RESULT=12的员工全量月度记录?

可以用单条SQL实现这个需求,以下是几种常用的实现方式:

方法1:使用EXISTS子查询

逻辑直观易懂,适合大多数数据库:

SELECT t.*
FROM your_table t
WHERE EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.employee_id = t.employee_id
      AND t2.YEEF_SAFE_HARBOR_RESULT = 12
);

逻辑说明:外层查询每条记录时,会检查同员工ID下是否存在任意一条YEEF_SAFE_HARBOR_RESULT等于12的记录,只要存在就保留该员工的所有数据。

方法2:使用窗口函数(适用于MySQL 8+、PostgreSQL、SQL Server等支持窗口函数的数据库)

效率较高,无需多次扫描表:

WITH employee_status AS (
    SELECT *,
           MAX(CASE WHEN YEEF_SAFE_HARBOR_RESULT = 12 THEN 1 ELSE 0 END) OVER (PARTITION BY employee_id) AS has_qualified
    FROM your_table
)
SELECT *
FROM employee_status
WHERE has_qualified = 1;

逻辑说明:先通过窗口函数按员工ID分组,标记每个员工是否存在符合条件的记录(存在则has_qualified为1,否则为0),再筛选出标记为1的所有记录。

方法3:使用IN子查询

先提取符合条件的员工ID集合,再查询对应数据:

SELECT *
FROM your_table
WHERE employee_id IN (
    SELECT DISTINCT employee_id
    FROM your_table
    WHERE YEEF_SAFE_HARBOR_RESULT = 12
);

逻辑说明:子查询先找出所有有YEEF_SAFE_HARBOR_RESULT=12记录的员工ID,外层查询直接获取这些员工的全部月度数据。

如果你的基础查询涉及多表关联,只需把上述示例中的your_table替换成你的多表关联结果(可以用子查询或CTE封装)即可。比如多表关联场景的EXISTS写法:

SELECT e.*, m.*
FROM employee e
JOIN monthly_record m ON e.id = m.employee_id
WHERE EXISTS (
    SELECT 1
    FROM monthly_record m2
    WHERE m2.employee_id = e.id
      AND m2.YEEF_SAFE_HARBOR_RESULT = 12
);

内容的提问来源于stack exchange,提问作者Colino3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:57:37