2012-08-28 66 views
1

我想选择下一个句子从MySQL的一些值:选择在哪里(浮动,.....)

SELECT 
    id, lead_id, form_id, field_number, value 
FROM 
    wp_rg_lead_detail 
WHERE 
    field_number IN (6.3, 6.6, 11, 12, 17, 14) 
ORDER BY 
    lead_id, field_number 

领域field_number是浮子和选择是刚上市的11 ,12,17和14字段,但不是来自6.3和6.6的值

句子有什么问题?

谢谢。

回答

1

查询没有问题。问题是float不是精确类型。使用decimal代替(或更改查询到类似... WHERE (field_number BETWEEN 6.2999 AND 6.3001) OR (field_number BETWEEN 6.5999 AND 6.6001 OR()...

+0

我得到的错误与mysql之间的。 – notforever

+0

对不起,没有括号...修复,它应该是“在6.2999和6.30001之间' – a1ex07

+0

你的帮助,它的工作。 – notforever

4

原因是6.3和6.6并没有真正存储在你的表中。计算机不能完美地表示大多数小数值。当存储的值与6.3或6.6进行比较时,即使它看起来应该也不匹配。差别可能在小数点后9位或10位,您通常不会看到。

http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html

如果需要比较准确的值,使它们的整数或小数。例如,如果小数点右侧没有超过1个数字,则可以将所有值乘以10来仅使用整数。

+1

“让他们整数” ---或小数 – zerkms

+0

表属于一个WordPress插件,当我改变字段为十进制它停止工作,我需要得到值为float。 – notforever