我有一张名为发票的表格,其中有3个字段(就本Q而言):
invoice_id, company_id, invoice_stamp
invoice_id
是PK,company_id
上的索引和invoice_stamp
是整数形式的unix时间戳。
我正在尝试找到获取发票清单的最佳方式,但是除了每张发票之外,还要计算表中有多少发票具有匹配的company_id并且invoice_stamp大于当前记录的发票数。
所以它需要一个连接本身,但我不完全确定如何构造它,无论它是FROM子句中的派生表,还是INNER JOIN或LEFT JOIN。
所以我的输出有望看起来像这样:
invoice_id | company_id | future invoice count
-----------------------------------------------
1001 | 12345 | 5
1002 | 67890 | 5
1003 | 67890 | 4
1004 | 67890 | 3
1005 | 12345 | 4
1006 | 12345 | 3
1007 | 12345 | 2
1008 | 67890 | 2
1009 | 67890 | 1
1010 | 12345 | 1
1011 | 12345 | 0
1012 | 67890 | 0
甚至可以使用MySQL,还是应该在MySQL客户端处理这样的事情?
有人有任何想法吗?
答案 0 :(得分:1)
您可以使用子选择(未经测试但应该工作)
SELECT invoice_id, company_id,
(SELECT count(invoice_id)
FROM invoice i2 WHERE i2.invoice_stamp > i.invoice_stamp)
AS future_invoice_count
FROM invoice i;