有一个表,只有一列,名为“info”,内容类似于{"Twitter": 28, "Total": 28, "Facebook": 1}
。当我编写sql时,我想测试“Total”是否大于10。有人可以帮我写查询吗? (表名称为landslides_7d
)
(这就是我所拥有的)
SELECT * FROM landslides_7d WHERE info.Total > 10;
谢谢。
最佳答案
数据格式似乎是JSON。如果您有 MySQL 5.7,则可以使用 JSON_EXTRACT
或缩写形式 ->
。这些功能在旧版本中不存在。
SELECT * FROM landslides_7d WHERE JSON_EXTRACT(info, '$.total') > 10;
或
SELECT * FROM landslides_7d WHERE info->total > 10;
参见http://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-extract
请注意,这是全表扫描。您想要在“更大”的表上创建索引。
如果您使用的是旧版本的 MySQL,您应该在表中创建一个额外的列,并手动将总值添加到该列。
关于mySQL 表 {"Twitter": 28, "Total": 28, "Facebook": 1},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515933/