如何在mySQL中查询表以按2个字段进行分组?
我卡住了 我正在尝试查询我的一个表,以获得最大的“容器更改日期”,分组对为“容器类型”和“测试单元” 我已经把一个表和一些虚拟数据放在一起(如下),如果您想要创建表模式,请告诉我,我会把它放在注释中。 最终的结果可能需要id,也可能需要整行id 预期结果(如下)的id为-1、2、3、5、7、8 6应作为匹配对拆下(测试单元=4,碳罐类型=一氧化碳),7应作为较晚的“碳罐更换日期”日期拆下 预期结果可能需要id或id以及其他字段如何在mySQL中查询表以按2个字段进行分组?,mysql,sql,Mysql,Sql,我卡住了 我正在尝试查询我的一个表,以获得最大的“容器更改日期”,分组对为“容器类型”和“测试单元” 我已经把一个表和一些虚拟数据放在一起(如下),如果您想要创建表模式,请告诉我,我会把它放在注释中。 最终的结果可能需要id,也可能需要整行id 预期结果(如下)的id为-1、2、3、5、7、8 6应作为匹配对拆下(测试单元=4,碳罐类型=一氧化碳),7应作为较晚的“碳罐更换日期”日期拆下 预期结果可能需要id或id以及其他字段 谢谢 您可以像这样在多个列上使用groupby SELECT C
谢谢 您可以像这样在多个列上使用
groupby
SELECT COUNT(*) FROM my_table GROUP BY column1, column2
如果要查找某列中值最高的行,则需要具有
子句和MAX()
聚合函数。你可以这样组合它们
SELECT max_column, column1, column2
GROUP BY column1, column2
HAVING max_column = MAX(max_column)
本例假设您希望为
column1
和column2
的每一对唯一的max\u列
查找最大值,其中不存在
:
select t.* from tablename
where not exists (
select 1 from tablename
where test_cell = t.test_cell and canister_type = canister_type
and canister_change_date > t.canister_change_date
)
或者,如果您的MySql版本为8.0+且支持窗口功能:
select t.* from (
select *,
row_number() over (partition by test_cell, canister_type order by canister_change_date desc) rn
from tablename
) t
where t.rn = 1
以表格形式向我们显示您的预期结果。@SQLfiddle此时已关闭。请尝试。SQLfiddle此时已关闭…对于每个容器类型和每个测试单元。这是什么意思?也许您的意思是-对于每个
(容器类型,测试单元)
对?谢谢您的回答,Kacper,不幸的是,当我使用此查询时,最终结果ID与表中的ID不匹配。知道为什么吗?