MySQL(v 5.5)大于或等于运算符正在添加未知量

时间:2016-08-29 16:46:16

标签: mysql operators

我正在使用下面的查询将客户为给定公司ID进行的所有重复交易汇总在一起。客户信息存储在联系人表中,交易详细信息位于客户交易表中,表通过contact_id链接。我在WHERE子句中遇到了一些奇怪的行为。 t.amount列是DECIMAL(15,2)。

使用WHERE t.amount > 0.0得出大约170,000的结果。但是,使用WHERE t.amount >= 0.0会将结果增加到200,000。更奇怪的是,当我尝试WHERE t.amount = 0.0时,查询返回0.0。来自其他公司的数据在>>=之间显示相同的金额差异。

SELECT SUM(amount) AS amount FROM ( SELECT *, @counter := IF(@customer_id = b.contact_id, @counter + 1, 1) AS txn_number, @customer_id := b.contact_id FROM ( SELECT t.contact_id, SUM(t.amount) AS amount, t.transacted_at AS transacted_at FROM customer_transactions t INNER JOIN contact con ON con.contact_id = t.contact_id WHERE con.company_id = #CompanyId AND t.amount >= 0.0 AND t.is_paid = true AND t.transacted_at IS NOT NULL GROUP BY t.contact_id, DATE(t.transacted_at) ORDER BY t.contact_id, t.transacted_at ASC ) AS b ) AS ct WHERE ct.txn_number > 1

简而言之,仅使用>会返回一个结果,使用>=会返回更大的结果,即使它被设置为>= 0.0是否有任何理由会发生这种情况?

0 个答案:

没有答案