gpt4 book ai didi

mysql - 使用 Group BY 自动递增

转载 作者:行者123 更新时间:2023-11-29 18:01:28 24 4
gpt4 key购买 nike

我有两个表,如下:

契约(Contract)

Contract |

合约用户

Contractuser

我的工作是从 Contractuser 表中获取每个契约(Contract)号的最新发票日期并显示结果。结果表如下:

结果表

Result Table

现在我想要一个自动增量列显示为结果集中的第一列。

我使用了以下查询:

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;

但似乎自动增量是在分组依据过程之前执行的,因为序列号以不连续的方式显示。

最佳答案

GROUP BY 和变量不一定按预期工作。只需使用子查询:

SELECT (@i := @i + 1) AS Sno, c.*
FROM (SELECT c.ContractNo, c.SoftwareName, c.CompanyName, cu.InvoiceNo, cu.InvoiceDate,
cu.InvAmount, cu.InvoicePF, max(cu.InvoicePT) AS InvoicePeriodTo, cu.InvoiceRD, cu.ISD
FROM contract c JOIN
contractuser as b
ON c.ContractNo = cu.ContractNo
GROUP BY cu.ContractNo
ORDER BY c.SoftwareName ASC
) c CROSS JOIN
(SELECT @i := 0) params;

注释:

  • 我还修复了 JOIN 语法。 切勿FROM子句中使用逗号。
  • 我还添加了合理的表别名——表的缩写。 ab 没有任何意义,因此它们使查询更难以理解。
  • 我只用一把 key 离开了GROUP BY。它确实应该拥有所有未聚合的 key ,但在某些情况下这是允许的。

关于mysql - 使用 Group BY 自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48283946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com