他是一个棘手的查询,我似乎无法弄清楚,除非我使用PHP - 我想不惜一切代价避免。所以这就是我想要做的......
我有一个名为invoices
的表。该表有一个名为paid
的字段。在将发票视为已付款后,此字段将被勾选。现在,我有一个名为Latest Invoices
的页面,其中显示了前100张发票(付费和未付款)的巨大列表。
SELECT * FROM invoices ORDER BY id DESC, id LIMIT 100
显然效果很好。但是,我想通过添加一个条件来调整此声明,该条件还包括在过去100张发票后不支付的任何发票。
换句话说:
- 前100张发票将显示PAID / UNPAID
- 然后任何未付的发票将在之后(无限制)
干杯
答案 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
顺序。