我有一个返回正确结果的查询,除了一些值外……不知道为什么。
我正在使用Chinook数据库。

SELECT SUM(unitPrice)
FROM invoiceLine
WHERE invoiceId = 5


这将返回13,86。

SELECT invoiceId, total
FROM invoice
WHERE invoiceId = 5


这也将返回13,86。现在考虑下一个查询:

SELECT invoiceId, total
FROM invoice
WHERE total = (SELECT SUM(unitPrice)
            FROM invoiceLine
            WHERE invoiceId = 5)


这返回...什么都没有!
当我更改为invoiceId = 1时,我确实获得了与该金额匹配的所有结果。

为什么??
(我知道最后一个查询没有多大意义,只是为了清楚地说明问题。

最佳答案

如果您的发票总额正确到2dp,则也可以使用

SELECT invoiceId, total
FROM invoice
WHERE total = (SELECT Round(SUM(unitPrice),2)
            FROM invoiceLine
            WHERE invoiceId = 5)


SQL Fiddle demo (with and without round)

关于sql - SQLITE:无法解释的行为-比较适用于某些数字,不适用于其他数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13866059/

10-09 03:41