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

如何编写SQL查询生成包含两个不同对象的JSON数组?

纯SQL生成包含两个不同对象的JSON数组

方法1:对齐列后使用UNION ALL + FOR JSON PATH

这种方法通过补全两个查询的缺失列(用NULL填充),让它们的结构一致,再通过UNION ALL合并结果集,最后整体生成JSON数组。FOR JSON PATH会自动忽略值为NULL的属性,正好匹配你的需求:

SELECT 
    'setcontext' AS command, 
    'client' AS recordtype, 
    1030 AS recordid,
    NULL AS usercode
UNION ALL
SELECT 
    'gotodq' AS command, 
    NULL AS recordtype, 
    NULL AS recordid,
    'react_webuser_debtor_details' AS usercode
FOR JSON PATH

执行后直接生成目标JSON数组:

[
    {
        "command": "setcontext",
        "recordtype": "client",
        "recordid": 1030
    },
    {
        "command": "gotodq",
        "usercode": "react_webuser_debtor_details"
    }
]

方法2:子查询生成独立JSON对象再合并

如果不想手动对齐列,可以通过子查询生成单个JSON对象,再用UNION ALL将它们作为行合并,最后通过JSON_QUERY避免转义并生成数组:

SELECT JSON_QUERY(json_item)
FROM (
    -- 生成第一个JSON对象
    SELECT (
        SELECT 'setcontext' AS command, 'client' AS recordtype, 1030 AS recordid 
        FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    ) AS json_item
    UNION ALL
    -- 生成第二个JSON对象
    SELECT (
        SELECT 'gotodq' AS command, 'react_webuser_debtor_details' AS usercode 
        FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    ) AS json_item
) AS combined
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

这个方法同样会直接输出你需要的JSON数组,无需额外字符串拼接操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:31:16