Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Mysql workbench中查询单个表_Mysql_Sql_Database - Fatal编程技术网

在Mysql workbench中查询单个表

在Mysql workbench中查询单个表,mysql,sql,database,Mysql,Sql,Database,我有下表: 订单表 City IDCustomer NumProd M. 0001. 9 M. 0002. 9 M. 0001. 11 M. 0002. 7 L. 0003. 2 L. 0003. 4 我想写一个方法来显示客户的id和他在每个城市中的最高分数。输出应该是 City. IDCustomer NumP

我有下表:

订单表

City    IDCustomer   NumProd
M.      0001.          9
M.      0002.          9
M.      0001.          11
M.      0002.          7
L.      0003.          2
L.      0003.          4
我想写一个方法来显示客户的id和他在每个城市中的最高分数。输出应该是

City.  IDCustomer   NumProd
  M.    0001.        11
  L.    0003         4

我怎样才能轻松做到这一点?

您只是在寻找聚合吗

select idcustomer, max(numprod)
from t
group by idcustomer;
编辑:

一种方法使用相关子查询:

select t.*
from t
where t.numprod = (select max(t2.numprod) from t t2 where t2.city = t.city);
另一种常用方法是行编号:

选择t* 从中选择t*, 按城市顺序按numprod desc as seqnum划分的分区上的行数 从t T
其中,seqnum=1

看起来您正在按查询查找基本分组

   SELECT IDCustomer,MAX(NumProd) FROM OrderTable GROUP BY IDCustomer;
GROUP BY语句将具有相同值的行分组到汇总行中,通常与COUNT、MAX、SUM等聚合函数一起使用

一般语法为:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

我的问题中有一个错误,修复了它,谢谢,它起作用了,但是你推荐的网站/教程是否理解这种类型的相关子查询?正如我所说,它是有效的,但我不明白它为什么有效,如果下个月我不得不做类似的事情,我可能无法做到。谢谢我的问题中有一个错误,修复了它。到目前为止,您尝试了什么?你被困在哪里?@NicoHaase我尝试了一个子查询,但sql给了我错误,因为子查询中有2列,请通过编辑将所有尝试添加到问题中,并显示错误消息