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

查询客户所有计算机BitLocker状态(ON/OFF)的SQL语句问题

修正后的SQL查询方案

问题分析

原查询存在三个核心问题:

  • 仅关联client_id未关联计算机唯一标识computer_id,导致同一客户下的计算机状态混淆
  • 子查询仅筛选protection_status="ON"的记录,无法正确显示未启用BitLocker的计算机状态
  • 未按计算机分组获取最新记录,无法保证取到每月新增的最新BitLocker数据

修正后的SQL语句

SELECT 
    c.*,
    CASE 
        WHEN EXISTS (
            SELECT 1 
            FROM bitlocker b
            JOIN (
                -- 获取每台计算机的最新BitLocker记录ID(按id递增取最新)
                SELECT computer_id, MAX(id) AS latest_id
                FROM bitlocker
                WHERE client_id = 72
                GROUP BY computer_id
            ) latest_b ON b.id = latest_b.latest_id
            WHERE b.computer_id = c.computer_id AND b.protection_status = "ON"
        ) THEN "ON"
        ELSE "OFF"
    END AS bitlocker_status
FROM computers c
WHERE c.client_id = 72;

关键逻辑说明

  • 获取最新记录:通过子查询按computer_id分组,取MAX(id)得到每台计算机的最新BitLocker记录(若date_recorded更可靠,可替换为MAX(date_recorded)后关联对应记录)
  • 状态判断:用EXISTS检查该计算机的最新记录中是否存在protection_status="ON"的驱动器,存在则返回ON,否则返回OFF
  • 保障完整性:直接从computers表出发查询指定客户的所有计算机,确保不会遗漏任何一台设备

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:33:11