MySQL小于或大于在获取具有限制的特定记录时不起作用

wkftcu5l  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(126)

我有一个表,如下所示,有5条记录。我想获取金额小于2000的所有记录的其余部分。除了最后/最新的两条记录。
| 发票ID|日期|金额|
| - ------|- ------|- ------|
| 小行星|2023年2月26日中午12:59|二万八千五百元|
| 小行星|2023年2月26日下午01:01|三百元|
| 小行星1158|2023年2月26日下午01:02|八百五十元|
| 小行星1159|2023年2月26日下午01:02|二万九千五百元|
| 小行星116|2023年2月26日下午01:03|八百五十元|
这是我想要的结果(保留最新的2条记录,并获取所有记录中数量低于2000的其余记录):
| 发票ID|日期|金额|
| - ------|- ------|- ------|
| 小行星|2023年2月26日下午01:01|三百元|
| 小行星1158|2023年2月26日下午01:02|八百五十元|

SELECT amount
from invoice
where invoiceDate LIKE '%2023-02-26%'
AND (amount < 2000)
ORDER BY invoiceId DESC
LIMIT 2,6

当我尝试上面的查询时,它只返回一个记录300,而不是预期的300和850。为什么?
但它的工作时,尝试与...

(amount > 0) or (amount > 300) or (amount > 500) -- as expected, 
(amount > 0), -- returns 300 and 850 and 28500.
(amount > 300), -- returns 850 and 28500.
(amount > 500), -- returns 850 and 28500.

但是当应用(amount > 20000)时,它还是不起作用,它返回null而不是预期的20000。为什么?

erhoui1w

erhoui1w1#

从顶部ID中减少所需的排除记录数可以解决这个问题。

select * from invoice WHERE 
amount<2000 and invoiceId < (SELECT max(invoiceId)-1 FROM invoice)

但仍然期待一个聪明的答案除了这种方法。

相关问题