c# - 如何选择列表列表或对象的对象不像表格?(SQL 服务器)
问题描述
我在 SQL Server 中有一个问题:我想要选择列表列表或对象的对象而不是表。
例子 :
SELECT p.Name, List (J.Name), ....
FROM dbo.Person AS p
INNER JOIN dbo.Jobs AS j ON j.PersonId = p.id
GROUP BY p.name
像一个 json 例子:
{
Name : "test"
Jobs : [
{
Name : "Job",
Position : 2
},{
Name : "Job1",
Position : 1
}]
}
对我来说这个问题有解决方案吗?
我想输出一个可用于 Web 服务的存储过程
解决方案
鉴于此示例数据:
CREATE TABLE dbo.Person(Id int, Name nvarchar(32));
INSERT dbo.Person VALUES(1, N'test');
CREATE TABLE dbo.Jobs(Id int, Name nvarchar(32), PersonId int, Position int);
INSERT dbo.Jobs VALUES(1, N'Job', 1, 2),(1, N'Job1',1,1);
您可以申请FOR JSON AUTO
加入以获得您想要的结果(好吧,关闭):
SELECT p.Name, jobs.Name, jobs.Position
FROM dbo.Person AS p
INNER JOIN dbo.Jobs AS jobs
ON jobs.PersonId = p.id
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;
输出(空白矿):
{
"Name":"test",
"jobs":[
{
"Name":"Job",
"Position":2
},{
"Name":"Job1",
"Position":1
}]
}
推荐阅读
- django - Django 是否支持多语言查询?
- firebase - 尽管安全规则设置正确,但 Firestore 写入不起作用
- python - 在 Keras 中将 LSTM 层添加到模型时出错
- c - 显示 VSCode 中所有文件的错误
- java - 无法通过文件中存储的密钥使用 RSA 加密进行解密
- c# - 边界框文本之间的 Cloud Vision API 大小
- django - django session 如何区分用户?
- java - 如何在 Visual Studio Code 中禁用 Java 中未使用导入的警告?
- html - 如何在我的输入中忽略移动设备上的文本预测?
- scrapy - 刮擦。在请求中通过元传递值时出现关键错误(last_page)。它工作一次,但在循环分页时会出现 keyerror