[英]SQL: where json field in (,..,)
我一直在尝试数十种不同的组合,但都没有成功。
我有一个表policies
,其中一列是id
,一列是created_for
,它本身就是 json。
json 看起来像这样: created_for: {"user_email": "hello@gmail.com", "project_serial": "K8BUADS001="}
。
现在我想获取project_serial
在某些值中的所有id
。
我尝试了什么:
SELECT p.id
FROM policies as p
WHERE JSON_VALUE(created_for, '$.project_serial') IN ('PROJIUHS6W001=', 'U5LQU13BIBN001=')
SELECT p.id
FROM policies as p
WHERE JSON_VALUE(created_for, '$.project_serial') IN ("PROJIUHS6W001=', 'U5LQU13BIBN001=")
SELECT p.id
FROM policies as p
WHERE created_for->>'$.project_serial' IN ('PROJIUHCHQ62UJ0KSS6W001=', 'PROJPPF4UE5LQU13BIBN001=')
SELECT p.id
FROM policies as p
WHERE created_for->>'$.project_serial' IN ("PROJIUHCHQ62UJ0KSS6W001=", "PROJPPF4UE5LQU13BIBN001=")
以及每个参数上的双引号/单引号的任何其他组合。 所有这些都给了我语法错误,我得到了很多: syntax error near unexpected token '('
,还有其他的,因为我尝试了许多组合。
任何人都知道这样做的正确方法是什么?
这将起作用:
SELECT
p.id FROM policies as p WHERE json_extract(created_for, '$.project_serial') IN
('PROJIUHS6W001=', 'U5LQU13BIBN001=')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.