我有查詢:浮點數和子查詢
SELECT
DISTINCT `g`.`id` ,
`g`.`steam_id` ,
`g`.`type` ,
`g`.`title` ,
`g`.`price` ,
`g`.`metascore` ,
`g`.`image` ,
(
SELECT `id`
FROM `game_promotions`
WHERE `game_promotions`.`game_id` = `g`.`id`
) AS `promotion_id`,
(
SELECT `price`
FROM `game_promotions`
WHERE `game_promotions`.`game_id` = `g`.`id`
) AS `promotion_price`,
(
SELECT COUNT(`id`)
FROM `bot_games`
WHERE `game_id` = `g`.`id`
AND `buyer` IS NULL
) AS `copies`
FROM
`games` AS `g` ,
`game_genres` AS `gg`
WHERE
`gg`.`game_id` = `g`.`id`
AND `g`.`title` LIKE "Counter%"
GROUP BY `promotion_id`
LIMIT 0 , 30
而問題是壞返回promotion_price
。在game_promotions
表中,price
是「24.99」,但查詢結果promotion_price
是「14.9899997711182」。返回的促銷ID很好。只浮動價格是無效的。爲什麼這個號碼改變了?
可能是因爲14.99無法在浮點數中精確表示。沒有多少數字可以。例如「我們是博格的浮點,準備近似」。 – 2013-02-08 21:08:00
如何定義價格欄? INT或FLOAT還是什麼? – 2013-02-08 21:14:40
價格欄定義爲FLOAT – Zalazdi 2013-02-08 21:27:48