MySQL:选择最后X行,然后选择特定行

时间:2014-01-16 19:44:41

标签: mysql sql

他是一个棘手的查询,我似乎无法弄清楚,除非我使用PHP - 我想不惜一切代价避免。所以这就是我想要做的......

我有一个名为invoices的表。该表有一个名为paid的字段。在将发票视为已付款后,此字段将被勾选。现在,我有一个名为Latest Invoices的页面,其中显示了前100张发票(付费和未付款)的巨大列表。

SELECT * FROM invoices ORDER BY id DESC, id LIMIT 100

显然效果很好。但是,我想通过添加一个条件来调整此声明,该条件还包括在过去100张发票后支付的任何发票。

换句话说:
- 前100张发票将显示PAID / UNPAID
- 然后任何未付的发票将在之后(无限制)

干杯

1 个答案:

答案 0 :(得分:3)

您需要确定前100个发票。以下是使用join

执行此操作的方法
SELECT i.*
FROM invoices i left outer join
     (select i.*
      from invoices i
      order by id desc
      limit 100
     ) i100
     on i.id = i100.id
WHERE i100.id is not null or i.paid = 0
ORDER BY id desc;

order by只使用id。这将把前100名放在首位。剩余的未付款将遵循逆id顺序。

相关问题