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

MySQL中如何基于表关联关系查询合同的设备关联状态

合同关联设备标记查询方案

需求:查询所有合同ID,并为每个合同标记是否关联了带设备的服务:

  • YES:该合同至少有一个关联服务的device_id不为空
  • NO:该合同所有关联服务的device_id都为空,或无关联服务

实现方案1:使用EXISTS子查询

该方案通过子查询快速判断是否存在符合条件的服务,性能较优:

SELECT 
    c.contract_id,
    CASE 
        WHEN EXISTS (
            SELECT 1 
            FROM services s 
            WHERE s.contract_id = c.contract_id 
              AND s.device_id IS NOT NULL
        ) THEN 'YES'
        ELSE 'NO'
    END AS has_associated_device
FROM contracts c;

实现方案2:使用左连接+分组聚合

该方案通过左连接保留所有合同,再通过聚合函数判断是否存在非空的device_id:

SELECT 
    c.contract_id,
    CASE 
        WHEN MAX(CASE WHEN s.device_id IS NOT NULL THEN 1 ELSE 0 END) = 1 THEN 'YES'
        ELSE 'NO'
    END AS has_associated_device
FROM contracts c
LEFT JOIN services s ON c.contract_id = s.contract_id
GROUP BY c.contract_id;

内容的提问来源于stack exchange,提问作者Luis Urán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:10:35