MySQL查询列出记录以及稍后计数的相关记录

时间:2012-03-26 16:31:46

标签: mysql join

我有一张名为发票的表格,其中有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客户端处理这样的事情?

有人有任何想法吗?

1 个答案:

答案 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;