mySQL 表 {"Twitter": 28, "Total": 28, "Facebook": 1}

标签 mysql

有一个表,只有一列,名为“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/

相关文章:

mysql - liquibase 变更集顺序是否会在后续更新中发生变化?

mysql - 将两列查询为一列?

php - MySQL-wp 索引

java - 如何使用自定义 LIKE 参数创建数据库 View ?

mysql - 如何使用mysql调用带有输入和输出参数的Entity Framework Core中的存储过程

mysql - 如何修复此错误并从多个表中进行选择?

mysql - SQL 使用最大值连接两个表

mysql - 从 MS SQL Server 插入到 MySQL 数据库

c# - 一对多映射不是级联删除

php - 不使用 mysqli 处理 MySQL 事务