【问题标题】:MySQL JSON: How to select MIN() valueMySQL JSON:如何选择 MIN() 值
【发布时间】:2017-12-11 04:27:01
【问题描述】:

我有一个 MySQL 表: 组合列是 JSON 数据类型

id | combo
1  | {"qty": "2", "variations": [{"name": "Cover", "value": "Paperback"}], "price": "14.00"}
2  | {"qty": "1", "variations": [{"name": "Cover", "value": "Hardback"}], "price": "7.00"}
3  | {"qty": "1", "variations": [{"name": "Cover", "value": "Paperback"}], "price": "15.00"}

我试图获得7.00MIN() 价格,但由于它们是字符串,所以它返回14.00

这可以吗?这是我尝试过的:

SELECT           
JSON_UNQUOTE(MIN(combo->'$.price')) AS min_price
FROM itemListings
GROUP BY id

我也尝试删除存储价格周围的报价,但结果相同。

【问题讨论】:

    标签: mysql json


    【解决方案1】:

    您的代码为您提供了字典顺序的最低要求;当对字符串进行排序时,"1""7" 之前,尽管字符串是"14.00""7:00",就像"apple""bat" 之前一样,尽管"apple""bat" 长。

    您想要 numerical 最小值,所以将该值转换为十进制数:

    SELECT
        id, -- you probably want the select the grouped by value too
        MIN(CAST(combo->'$.price' AS DECIMAL(10,2))) AS min_price
    FROM itemListings
    GROUP BY id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多