MySQL 中的 JSON 字段过滤查询?.



我现在有一个数据表,其中包含以下字段:ID,主场,客场,状态。
JSON 数据存储在主场和客场字段中

statusstyle="文本对齐:居中;">1style="文本对齐:居中;">2style="文本对齐:居中;">3style="文本对齐:居中;">4
id home away
{"id":10, "value":0} {"id":11, "value":0} 3
{"id":11, "value":0}{"id":10, "value":0}3
{"id":10, "value":0}{"id":20, "value":0}3
{"id":40, "value":0}{"id":10, "value":0}2

您需要在 WHERE 子句中添加另外两个限制:

仅返回状态等于 3、home->id 或 away->id 等于 10 且 home->id 不等于 11 且 away->id 不等于 11 的行。

SELECT * 
FROM table_name 
WHERE 
status = '3' 
AND (home->"$.id" = 10 OR away->"$.id" = 10)
AND home->"$.id" != 11 
AND away->"$.id" != 11
ORDER BY id DESC; 

小心在 WHERE 子句中使用 AND 和 OR:这个status = '3' AND home->"$.id" = 10 OR away->"$.id" = 10就像(status = '3' AND home->"$.id" = 10) OR away->"$.id" = 10不像status = '3' AND (home->"$.id" = 10 OR away->"$.id" = 10)。有时您需要使用括号。

在这种情况下,您可以使用JSON_CONTAINS函数作为方法:

select * 
from tbl
where 
status = 3 and 
not json_contains(home, '11', '$.id') and 
not json_contains(away, '11', '$.id');

在此处测试 MySQL 查询

最新更新