我有两张table如下:
合同
|
合同使用者
我的工作是从contractuser表中获取每个合同号的最新发票日期并显示结果。结果表如下:
结果表
现在我想得到一个自动递增的列来显示为结果集中的第一列。
我使用了以下查询:
SELECT @i:=@i+1 AS Sno,a.ContractNo,a.SoftwareName,a.CompanyName,b.InvoiceNo,b.InvoiceDate,
b.InvAmount,b.InvoicePF,max(b.InvoicePT) AS InvoicePeriodTo,b.InvoiceRD,b.ISD
FROM contract as a,contractuser as b,(SELECT @i:=0) AS i
WHERE a.ContractNo=b.ContractNo
GROUP BY b.ContractNo
ORDER BY a.SoftwareName ASC;
但是,似乎自动递增是在groupby过程之前执行的,因为序列号是以非连续的方式显示的。
1条答案
按热度按时间hmae6n7t1#
GROUP BY
而且变量也不一定像预期的那样工作。只需使用子查询:笔记:
我还修复了
JOIN
语法。不要在句子中使用逗号FROM
条款。我还添加了合理的表别名--表的缩写。
a
以及b
没有任何意义,因此它们使查询更难理解。我离开房间了
GROUP BY
只有一把钥匙。它应该拥有所有未聚合的密钥,但在某些情况下这是允许的。