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

将含子查询的SQL语句转换为使用CASE与JOIN的实现方案

转换后的SQL语句
SELECT 
    cv.id, 
    cv.Ticket_id, 
    cv.serial_no, 
    cv.operator,
    MAX(CASE WHEN fd.key = 'COMPUTER_TYPE' THEN fd.value END) AS COMPUTER_TYPE,
    MAX(CASE WHEN fd.key = 'BRAND' THEN fd.value END) AS BRAND,
    MAX(CASE WHEN fd.key = 'MODEL' THEN fd.value END) AS MODEL,
    cv.status, 
    cv.datetime
FROM Form cv
LEFT JOIN Forms_Details fd 
    ON cv.id = fd.FORM_ID 
    AND fd.status = 'ACTIVE'
WHERE cv.status = 'ACTIVE'
GROUP BY cv.id, cv.Ticket_id, cv.serial_no, cv.operator, cv.status, cv.datetime
ORDER BY cv.id DESC;

转换说明

  • 用LEFT JOIN关联Forms_Details表,将主表Form的id与明细表里的FORM_ID匹配,同时在关联条件里过滤掉明细表里状态非ACTIVE的记录,避免漏掉无对应明细的主表数据。
  • 通过CASE语句匹配明细的key值,把对应的value分别映射到COMPUTER_TYPE、BRAND、MODEL字段。使用MAX聚合函数是为了将同一主表记录的多条明细合并成一行,确保每个字段取到有效值(若同一key有多条记录,可根据需求替换成MIN等其他聚合函数)。
  • 按主表的非聚合字段分组,保证结果每条记录对应原查询的一行主表数据,排序逻辑和原查询保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:25:28