我最近在查询中使用了LEAST(tb1,tb2,tb3)AS名称来获取多列中的最小值并检查它们是否不等于默认值0.00
到目前为止它工作正常并且对我来说也是如此,远程服务器上的脚本版本运行正常。
但是,在更改列默认值和NULL状态之后(我试图看看我是否可以使用NULL而不是0.00,这在阅读了LEAST文档之后不会是我想要做的。)然后重新导入我最初使用的表。它仍然不会像以前一样工作,因为没有明显的原因,我使用LEAST()的查询根本不返回任何内容,空数组,并且没有可见的错误消息。
我重新启动了MySQL,刷新了表,拉了远程脚本以在我的开发服务器上进行测试,似乎没有任何工作。
在我的dev和远程服务器上通过phpmyadmin在表上运行相同的查询返回相反的结果,在本地返回零行,远程返回行,两者都有相同的EXPLAIN结果(除了表中的#rows) 。
从查询中删除LEAST()函数,确实在我的开发服务器上返回数据。
以下是一个示例查询:
SELECT id, make, model, LEAST(r24ch10k, r36ch10k, r24ch15k, r36ch15k, r24ch20k, r36ch20k) AS lowest
FROM xml
WHERE LEAST(r24ch10k, r36ch10k, r24ch15k, r36ch15k, r24ch20k, r36ch20k) != 0.00
ORDER BY lowest LIMIT 5
我的本地服务器信息:
服务器版本:5.1.51-社区
Apache / 2.2.16(Win32)PHP / 5.3.3
MySQL客户端版本:mysqlnd 5.0.7-dev - 091210 - $ Revision:300533 $
PHP扩展:mysqli
我的远程服务器信息:
服务器版本:5.0.51a-24 + lenny5
Apache / 2.2.16 PHP / 5.3.3
MySQL客户端版本:5.0.51a
PHP扩展:mysql
有助于解决此问题。
答案 0 :(得分:0)
不知道这是否有帮助,LEAST()
在MySQL 5.0.13之前,LEAST()返回 仅当所有参数均为NULL时才为NULL。 从5.0.13开始,如果有的话,它返回NULL 参数为NULL。
答案 1 :(得分:0)
我在MySQL论坛上找到了一些帮助。
由于我所寻找的是最低值,因此将默认值设置为最低可能值是我错误的地方。
我已将列的默认值设置为较高的值(9999999999.99),添加到这些列的值永远不会超过默认值。
所以而不是
WHERE LEAST(col1, col2, col3) != 0.00
我会用
WHERE LEAST(col1, col2, col3) != 99999999999.99