【发布时间】:2018-05-01 06:44:55
【问题描述】:
我有两个表,每个表都有其 JSON 列。我想从第一个中选择不在第二个中的行,搜索条件是 JSON 的属性之一。
Request.Details->'$.Key'有以下数据
"9523beaf-934b-e811-80d1-6a077df8507e"
"cf287991-434c-e811-80d1-6a077df8507e"
Response.response->'$.Key'有以下数据
"9523beaf-934b-e811-80d1-6a077df8507e"
现在我测试了这个查询:
select msr.`Details`->'$.Key' m
from `Request` msr
where msr.`Details`->'$.Key' in (select `response`->'$.Key' from `Response`);
它工作正常并返回
"9523beaf-934b-e811-80d1-6a077df8507e"
但是当我使用NOT IN 时,它会返回一个空表。
select msr.`Details`->'$.Key' m
from `Request` msr
where msr.`Details`->'$.Key' not in (select `response`->'$.Key' from `Response`);
【问题讨论】:
-
欢迎来到 Stack Overflow。您的问题非常好,并且具有回答它所需的一切。我对其进行了一些编辑以使其更具可读性。