Mysql 如何选择发票金额最大的客户名称
我有两张桌子Mysql 如何选择发票金额最大的客户名称,mysql,sql,join,greatest-n-per-group,Mysql,Sql,Join,Greatest N Per Group,我有两张桌子 Customers ---------------- ID | Name ----+----------- 123 | Name1 456 | Name2 789 | Name3 ---------------- Invoices ------------------ ID | Value ----+------------- 123 | 1000 456 | 500 789 | 1000 ------------------ 我想选择发票金额最大的客户名称我们也可以通
Customers
----------------
ID | Name
----+-----------
123 | Name1
456 | Name2
789 | Name3
----------------
Invoices
------------------
ID | Value
----+-------------
123 | 1000
456 | 500
789 | 1000
------------------
我想选择发票金额最大的客户名称我们也可以通过子查询获得结果。 将[]括号与值和名称一起使用。因为这是SQL server中的保留关键字
SELECT C.ID, C.[Name], I.[Value]
FROM Customers C WITH(NOLOCK)
JOIN (
SELECT TOP 1 ID, [Value]
FROM Invoices WITH(NOLOCK)
ORDER BY [Value] DESC
) AS I
ON C.ID = I.ID
根据最大值进行测试
select c.name , i.value
from customers c
join invoices i on i.id = c.id
where i.value = (select max(value) from invoices);
+-------+-------+
| name | value |
+-------+-------+
| Name1 | 1000 |
| Name3 | 1000 |
+-------+-------+
2 rows in set (0.001 sec)
您希望此示例数据的结果是什么?也,如果一个客户有多张发票,该怎么办?您是想得到排名靠前的客户,还是想得到多个发票金额按降序排序的客户?我想得到发票金额最高的客户名称在这种情况下,最高发票金额是1000,结果应该是name1和name3客户是否有多张发票如果其中一张发票等于最高发票金额,则应返回其姓名。您是否得到答复?您能告诉我您正在使用的MySQL版本吗?这是sqlserver对一个MySQL问题的回答-代码不可传输,您可能会因为前面提到的SQL和my SQL而遭到否决。请检查定义和他的注释@P.salmon请查看sql标记-这并不意味着OP正在使用sqlserver-即;这就是为什么标签可以更精确地识别问题所涉及的sql方言。如果OP想要sqlserver,那就有一个标签。它确实有用,谢谢