如果我有一个数据库表:
(详细信息是 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 的记录
尝试交叉应用。
SELECT *
FROM tableName
CROSS APPLY OPENJSON(tableName.Details) WITH (qty NVARCHAR(20) '$.qty')
WHERE qty = 1