Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行OPENJSON_查询时,子查询返回了多个值_Json_Sql Server - Fatal编程技术网

在运行OPENJSON_查询时,子查询返回了多个值

在运行OPENJSON_查询时,子查询返回了多个值,json,sql-server,Json,Sql Server,我正试图针对下表编写一个查询 创建表employees id int identity1,1主键,content nvarcharmax; 在员工内容中插入 价值观 不{ 姓名:约翰·多伊, 技能:[ { 语言:SQL, 年份:3 }, { 语言:C, 年份:4 } ] }', 不{ 姓名:爱丽丝·史密斯, 技能:[ { 语言:JS, 年份:5 } ] } ' ; 我要做的是得到以下结果 + id + name + language + years + | 1 | John Do

我正试图针对下表编写一个查询

创建表employees id int identity1,1主键,content nvarcharmax; 在员工内容中插入 价值观 不{ 姓名:约翰·多伊, 技能:[ { 语言:SQL, 年份:3 }, { 语言:C, 年份:4 } ] }', 不{ 姓名:爱丽丝·史密斯, 技能:[ { 语言:JS, 年份:5 } ] } ' ; 我要做的是得到以下结果

+ id + name        + language + years +
|  1 | John Doe    | SQL      |     3 |
|  2 | John Doe    | C#       |     4 |
|  3 | Alice Smith | JS       |     3 |
这是我想到的

从中选择* OPENJSONJSON_查询从员工中选择内容,'$.skills' 具有 语言VARCHAR50'$.Language', 年整数“$.Years” 您可以在dbfiddle中查看它

当内容列包含一行时,它可以工作,但当有更多行时,它会失败

Subquery returned more than 1 value. This is not permitted when the subquery 
follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我明白这意味着什么,但我不知道如何以不同的方式实现它


我一直在尝试和

此错误的原因是JSON_QUERYSELECT content FROM employees,'$.skills'语句的一部分,因为JSON_QUERY需要一个JSON字符串。要解决此错误,可以尝试以下语句:

SELECT e.id, j1.name, j2.language, j2.years
FROM employees e
OUTER APPLY OPENJSON(e.content) WITH (
   name nvarchar(100) '$.name',
   skills nvarchar(max) '$.skills' AS JSON
) j1
OUTER APPLY OPENJSON(j1.skills) WITH (
   language nvarchar(100) '$.language',
   years int '$.years'
) j2
结果:

id  name        language    years
1   John Doe    SQL         3
1   John Doe    C#          4
2   Alice Smith JS          5

这里的错误告诉您问题所在。您不明白的错误是什么,我们可以尝试详细说明。下面是MS文档的示例