FLOAT 為近似數值型別,直接 SUM() 常出現尾數誤差(如 0.1+0.2≠0.3)。
將欄位型別改為 DECIMAL(16,6)(16 位總長,6 位小數),精確儲存與運算。遷移步驟:
price_new DECIMAL(16,6)UPDATE t SET price_new = CAST(price AS DECIMAL(16,6))DROP price; ALTER TABLE t CHANGE price_new price DECIMAL(16,6)SELECT SUM(a.number * BINARY(b.price)) AS total
FROM ler_card AS a
LEFT JOIN ler_items AS b ON a.itemId = b.itemId
WHERE user_id = 1;
BINARY 非函數,屬型別轉換運算子,強制後續運算式以二進制字串處理