qq_39015775 2021-08-23 16:35 采纳率: 100%
浏览 113
已结题

PGSQL 查询字段必须出现在GROUP BY中,但又不想作为分组依据,怎么更好的实现

mysql中可以直接获取最大值所在列的任意字段
执行

select id,MAX(number) from test GROUP BY category

结果:
| id | MAX(number) |
| -- | -- |
| 1 | 15 |
| 2 | 23 |

img
但是PGSQL中查找的字段必须出现在GROUP BY中,

img
目前只能嵌套查询再查一次得到结果

img

总感觉有点怪怪的,是否有更好的实现方式呢?

mysql表

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `createdtime` date NULL DEFAULT NULL COMMENT '日期',
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `category` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '品类',
  `number` int(11) UNSIGNED NULL DEFAULT NULL COMMENT '数量',
  `finalamount` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `test` VALUES ('2021-06-02', 1, 'can', 10, 500);
INSERT INTO `test` VALUES ('2021-06-02', 2, 'pet', 23, 680);
INSERT INTO `test` VALUES ('2021-06-02', 3, 'can', 13, 570);
INSERT INTO `test` VALUES ('2021-05-13', 4, 'can', 15, 590);
INSERT INTO `test` VALUES ('2021-05-18', 5, 'pet', 17, 530);

pgsql表

DROP TABLE IF EXISTS "public"."testmember";
CREATE TABLE "public"."testmember" (
  "id" int4 NOT NULL DEFAULT nextval('testmember_id_seq'::regclass),
  "name" varchar COLLATE "pg_catalog"."default",
  "platstatus" int4,
  "mnumber" int4
);
ALTER TABLE "public"."testmember" ADD CONSTRAINT "testmember_pkey" PRIMARY KEY ("id");

INSERT INTO "public"."testmember" VALUES (1, 'aa', 1, 5);
INSERT INTO "public"."testmember" VALUES (2, 'bb', 2, 6);
INSERT INTO "public"."testmember" VALUES (3, 'cc', 1, 5);
INSERT INTO "public"."testmember" VALUES (4, 'aa', 1, 8);

  • 写回答

3条回答 默认 最新

  • 关注

    select * from testmember a where (select count(1) from testmember b where b.plat status = a.platstat us and b.mnumber > a.mnumber ) < 1

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN专家-sinJack 2021-08-23 16:46
    关注

    你直接把ID字段放在group by 后面,其实并不会影响你的排序,你本身求的就是最大值。

    评论
  • 关注

    你把想改的sql发一下文字方便复制粘贴

    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 修改了问题 8月23日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 Jupyter Notebook 数学公式不渲染
  • ¥20 ERR_CACHE_MISS 确认重新提交表单
  • ¥20 关于vba使用HTMLfile执行js函数问题
  • ¥60 悬赏求解,通过实时现场摄像头的视频图像识别其他对家打出的麻将牌,识别麻将牌,识别牌墙位置,通过识别对家打出了什么牌
  • ¥15 关于#GPU jetson#的pcie驱动开发问题,如何解决?
  • ¥15 stm32f103zet6 串口5无法收发数据
  • ¥15 关于C语言使用线程队列实现多线程并发
  • ¥15 这个运行,错误在哪里呀,大家看看吧,教导我
  • ¥15 advanceinstaller对话框设置
  • ¥100 正常上网,内部网页无法打开