在检查 OPENJSON 值时从数据库表中选择记录

问题描述 投票:0回答:1

如果我有一个数据库表:

(详细信息是 JSON 字符串)

Id   Details                             Price
1   {"partNumber":"012345","qty":14}    14.99
2   {"partNumber":"22222","qty":11}     4.88
3   {"partNumber":"44444","qty":1}      3.24
4   {"partNumber":"72431223","qty":9}   3.33
5   {"partNumber":"98989","qty":1}      3.33

我只想返回数量 (qty) 为 1 的记录。

所以只返回id为1和3的记录。

到目前为止我已经有了

select * from tableName where ('1') IN (select qty from OPENJSON(tableName.Details) WITH ( [qty]  NVARCHAR(20) '$.qty'))

这是正确的,但是如果我想更改数量以返回数量小于 10 的结果,那么我会返回 id 为 3、4 和 5 的记录

sql ssms
1个回答
0
投票

尝试交叉应用

SELECT * 
FROM tableName  
CROSS APPLY OPENJSON(tableName.Details) WITH (qty NVARCHAR(20) '$.qty')
WHERE qty = 1
© www.soinside.com 2019 - 2024. All rights reserved.