这是我的查询:
INSERT INTO `temp_map_196`
(SELECT DISTINCT
NULL,NULL,NULL,
t1.`price`,
t1.`price`,
COUNT(*) AS `count`
FROM `raw_table_1` t1
GROUP BY `price`
ORDER BY `count` DESC)
t1.price
是一DECIMAL
列。这些值被插入到varchar
列中。
1, 10, 10.5
全部正确插入。
但是1.6
,1.8
成为1.60000002384186
和1.79999995231628
如果我将查询更改为:
INSERT INTO `temp_map_196`
(SELECT
NULL,NULL,NULL,
1.6,
1.6,
1
)
一切正常。
当我将原始查询更改为:
INSERT INTO `temp_map_196`
(SELECT DISTINCT
NULL,NULL,NULL,
CAST (t1.`price` AS DECIMAL(8,2)),
CAST (t1.`price` AS DECIMAL(8,2)),
COUNT(*) AS `count`
FROM `raw_table_1` t1
GROUP BY `price`
ORDER BY `count` DESC)
但我不能这样做,因为该列并不总是接收十进制值。
为什么 MySQL 在源数据中似乎没有插入这些奇怪的小数?(作为查询的SELECT
一部分INSERT
并自行运行,没有这种奇怪的值)。