这是我的查询:
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并自行运行,没有这种奇怪的值)。