如何在 mssql 中为 json 路径使用左连接?

乔恩·南

当我使用left joinwith 时for json path出现错误:

由于与其他列名或别名冲突,无法在 JSON 输出中生成属性“product_id”。对 SELECT 列表中的每一列使用不同的名称和别名。

从这个查询:

select top 1
 1 as [foo.bar],
 p.*, cp.*
from product p
left JOIN company_product cp on cp.product_id = p.product_id
for json path

当我更改为时for json pathfor json auto它不会抛出错误,但结果未按预期输出:

 [{ "foo.bar": 1, "product_id": 751, ... "cp": [{ "product_id": 751, "company_id": 273, .. }]

当我移动1 as [foo.bar]到选择的末尾时,它会产生另一个问题

select top 1
     p.*, cp.*,
     1 as [foo.bar]
    from product p
    left JOIN company_product cp on cp.product_id = p.product_id
    for json auto

foo.bar内部 cp的对象。它并不像预期的那样:

 [{ "product_id": 751, ... "cp": [{ "product_id": 751, "company_id": 273, "foo.bar": 1, ..}]

相反应该是:

  [{ "product_id": 751, ... "cp": [{ "product_id": 751, "company_id": 273, ..}], "foo.bar": 1, ..}]

所以当我使用for json auto. 任何想法,如果有使用的方式left joinfor path或解决这个问题,这for auto使得?

若罗夫

文档中所述,当...指定 AUTO 选项时,JSON 输出的格式将根据 SELECT 列表中的列顺序及其源表自动确定......可以' t 改变这种格式因此,一个可能的选择是使用子查询:

表格:

SELECT *
INTO product
FROM (VALUES (751)) v (product_id)
SELECT *
INTO company_product
FROM (VALUES (751, 273), (751, 274)) v (product_id, company_id)

陈述:

SELECT p.*, cp.*
FROM (
   SELECT *, 1 as [foo.bar]
   FROM product 
) p
LEFT JOIN company_product cp on cp.product_id = p.product_id
FOR JSON AUTO

结果:

[
   {
      "product_id":751,
      "foo.bar":1,
      "cp":[
         {"product_id":751, "company_id":273},
         {"product_id":751, "company_id":274}
      ]
   }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Codeigniter中连接mssql?

如何在MSSQL中更新JSON中的嵌套数组

如何从mssql中的json列获取数据

如何在 EF 中为 MSSQL 获取隔离级别?

我如何在 javascript 中为 Json 数组使用 forEach

如何关闭节点 js mssql 中的连接?

如何在SQLAlchemy for MSSQL中设置架构?

如何在 JSON 路径中为 redshift 中的超级类型处理美元符号 ($)?

如何在package.json中的项目目录中为gulp文件创建路径

如何在UWP(.NET通用应用程序)中连接到MSSQL服务器

如何在Groovy中使用MSSQL Select

如何使用 mssql 解析 JSON 数组字符串?

如何在Windows身份验证和强制加密设置为true的情况下连接到MSSQL Server

如何使用Asp.net从MSSQL数据库中将数据检索到JSON代码中

如何在 Coldfusion 2021 脚本中获取为 MSSQL“插入”查询生成的密钥?

如何在mssql中为每个UserID分配两个AccountID?

如何使用纯JavaScript连接到MSSQL

如何在Java中为每个请求使用JSON Web令牌(JWT)?

如何在R中执行左连接?

如何在Laravel宅基地中连接MSSQL?

如何在左连接查询中使用内部连接查询的结果,在一个查询中

如何从JSON数组MSSQL获取数据

如何在量角器 + VSCode 中获取 mssql 输出

如何在Python Docker映像中安装MSSQL Server?

如何在MSSQL中每天返回所有ID

如何在mssql节点模块中处理SQL注入

如何在MSSQL中存储和检索扩展的ASCII字符

(mssql) 如何在提取的数据中添加额外的列

如何在 MSSQL 中更新列的多条记录?