gpt4 book ai didi

MySQL查询每个子组

转载 作者:行者123 更新时间:2023-11-29 08:07:53 24 4
gpt4 key购买 nike

我有一个这样的表:

Year Month    Code
1850 January 5210
1850 February 3524
1851 January 6752
1851 January 9877
1851 February 3698

我想删除一年内重复的月份(例如 1851 年 1 月)。我不介意丢失一个代码(6752 或 9877)。我想到使用:

Select * from table1 group by Month

但我每年都需要分组。否则我只会从表中的三个一月中选择一个,而我需要选择其中两个(一个在 1850 年,一个在 1851 年)。当然,我的 table 很大,我无法手动完成。谢谢。

最佳答案

如果您只想拥有 count>1 的条目,那么您可以这样做:

Select year, month, code, count(1) as cnt from table1 group by year, month having cnt>1;

如果表很大,请确保yearmonth都是索引,否则您将花费​​大量时间等待结果。

http://sqlfiddle.com/#!2/eb325/3

更新:对于超过 2 行的情况(实际上一般来说,如果您不关心丢失的“代码”条目),从每个年月中选择一个条目可能是有意义的一个新表(这将为您留下独特的年月组合),然后丢弃旧表,如下所示:

CREATE TABLE table1_temp SELECT year, month, MIN(code) as code FROM table1 GROUP BY year, month;
DROP TABLE table1;
RENAME TABLE table1_temp TO table1;

http://sqlfiddle.com/#!2/113954/1

关于MySQL查询每个子组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22348638/

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