json - 如何在 Sqlite 中加入多个 JSON 列
问题描述
我正在寻找在同一个表中加入多个 JSON 列的 Sqlite 语法。我创建了一个像这样的表:-
SQL = "CREATE TABLE BranchStock (branch VARCHAR, oldstock JSON, newstock JSON)"
....
然后我插入一些项目,如: -
INSERT INTO BranchStock VALUES('Melbourne','[{"catnumber":"ABC123","instock":5},{"catnumber":"BCD321","instock":3}]','[{"catnumber":"ABC123","instock":1},{"catnumber":"BCD321","instock":5}]');
INSERT INTO BranchStock VALUES('Sydney','[{"catnumber":"ABC123","instock":7},{"catnumber":"XYZ567","instock":0}]','[{"catnumber":"ABC123","instock":5},{"catnumber":"XYZ567","instock":3}]');
....
现在我正在寻找搜索 sql 以列出哪些分支具有 catnumber='ABC123' newstock 或 oldstock,以及库存量。也许是这样的: -
SELECT * FROM BranchStock
JOIN json_each(oldstock) ON json_valid(oldstock)
JOIN json_each(newstock) ON json_valid(newstock)
WHERE json_extract(value, '$.name')='ABC123');
以上适用于一个 JOIN,但是当我实现第二个 JOIN 时,我得到一个语法错误。
有谁知道正确的语法?提前致谢。
解决方案
您没有具体说明“语法”错误,所以我试了一下。
)
此 SQL在WHERE
子句的最后一个给出语法错误。一旦修复了它,它就会抱怨列名不明确,这可以通过给json_each
s 起别名来修复。还有更多的抱怨,但这是一个反复的过程。
我得到(我的解释)它的工作,这很有趣!所以坚持下去。
提示:我改变了(两个)连接像这样
LEFT JOIN json_each(oldstock) os ON json_valid(oldstock) and json_extract(os.value,'$.catnumber') = 'ABC123'
[我不会与@Shawn 的评论争论,但我使用了这种方法,它对我有用,到目前为止已经节省了很多重构!]
推荐阅读
- c# - IAsyncResult 同步完成
- android - 奥利奥通知问题
- python - 通过循环引用和创建数据框
- android - “预期为 BEGIN_ARRAY,但为 BEGIN_OBJECT”是什么意思?
- python - OpenCv 找到相似的图像
- sql - ORA-00933: 插入多行时 SQL 命令未正确结束
- facebook-graph-api - 通过共享对话框 PHP SDK 签入
- javascript - Javascript:为什么在方法上使用 getter?
- mongodb - 将值转换为mongodb中的键
- c# - 控制器的 ASP.NET Core 路由和索引操作