0
錯誤這裏是我的查詢:「MySQL的INSERT INTO ... SELECT」 十進制值
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
並單獨運行它,沒有這樣奇怪的值)。
'但是我不能這樣做,因爲該列將不會總是接收小數值。「 - 爲什麼你不總是接收小數值?那不可能是因爲'價格'是十進制的。 –
爲什麼要訂購用於填充任一表的查詢?這似乎有點w漏。 – paxdiablo
嘗試'CAST(t1.price AS CHAR)' – Omesh