我有一个返回正确结果的查询,除了一些值外……不知道为什么。
我正在使用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/