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

如何合并两条SQL查询:获取MID并关联队列统计数(无数据显示0)

合并两条SQL查询语句的解决方案

我正在开展一个项目,当前使用两条SQL查询语句获取需处理的结果:
Query 1

SELECT MID FROM PMS.MACHINE WHERE STATUS=1 AND MID !=0;

Query 2

SELECT MID,COUNT(STATUS) AS QUEUE
FROM PMS.QUEUE
WHERE STATUS=0
GROUP BY MID
ORDER BY MID ASC;

我希望将这两条查询合并为单条语句,结果需展示PMS.MACHINE表的MID以及PMS.QUEUE表的QUEUE统计数,若无对应统计数则显示为0。

合并后的SQL语句

SELECT 
    m.MID,
    COALESCE(q.QUEUE, 0) AS QUEUE
FROM PMS.MACHINE m
LEFT JOIN (
    -- 子查询预计算每个MID对应的QUEUE统计数
    SELECT MID, COUNT(STATUS) AS QUEUE
    FROM PMS.QUEUE
    WHERE STATUS=0
    GROUP BY MID
) q ON m.MID = q.MID
WHERE m.STATUS=1 AND m.MID !=0
ORDER BY m.MID ASC;

逻辑说明

  1. 使用**左连接(LEFT JOIN)**确保PMS.MACHINE中所有符合筛选条件(STATUS=1且MID≠0)的记录都能被保留,即使在PMS.QUEUE中没有对应记录
  2. 子查询提前完成PMS.QUEUE的统计工作,避免重复计算
  3. COALESCE函数将无对应统计数时的NULL值替换为0,满足需求中的显示要求
  4. 最后按MID升序排序,与原Query 2的排序逻辑保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:32:41