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

SQL查询如何不删除行仅当is_primary_mo=1时显示f表指定字段

解决方案

核心逻辑为使用条件判断语句替换原SQL中直接读取f表两个字段的逻辑,仅当is_primary_mo值为'1'时返回对应字段内容,否则返回空值,完全不会过滤原有员工行。

修改后完整SQL(兼容所有主流数据库)

SELECT 
    a.last_name, 
    a.first_name, 
    a.id_number, 
    a.start_date AS 'Hire Date', 
    e.program_name, 
    a.dob, 
    a.mobile_phone AS Cell_phone, 
    a.email_staff,
    c.description AS Role, 
    -- 仅is_primary_mo为1时返回值,否则返回空
    CASE WHEN f.is_primary_mo = '1' THEN f.is_primary_mo ELSE NULL END AS 'Primary office',
    CASE WHEN f.is_primary_mo = '1' THEN f.street_address_1 ELSE NULL END AS street_address_1
FROM staff_view a
INNER JOIN staff_worker_role_link b
ON a.staff_id = b.staff_id
INNER JOIN worker_role c
ON b.worker_role_id = c.worker_role_id
INNER JOIN staff_program_link d
ON a.staff_id = d.staff_id
INNER JOIN program_info e
ON d.program_info_id = e.program_info_id
INNER JOIN staff_office_demographics_byprimary_view f
ON a.staff_id = f.staff_id
WHERE a.end_date IS NULL
ORDER BY a.last_name, a.first_name

MySQL环境简化写法

如果使用MySQL数据库,两个条件字段可以简化为IF函数写法:

IF(f.is_primary_mo = '1', f.is_primary_mo, NULL) AS 'Primary office',
IF(f.is_primary_mo = '1', f.street_address_1, NULL) AS street_address_1

修改后is_primary_mo为非1值时,两个字段会返回空值,既保留了所有员工行,也实现了指定内容的隐藏需求,原有查询的过滤、排序逻辑无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:36:04