这种唯一且最小如何查询?

数据如下

uid price

1 1
1 2
1 7
2 2
2 3
2 4
3 5
3 4
4 6

期望输出如下:

uid price

1 1
2 3
3 5
4 6

需求:想要查询出当前所有唯一的price,如果同一个uid有多个唯一的price只能取唯一且最小的那个

问题:唯一price查询我能实现,用group by price,主要是“如果同一个uid有多个唯一的price只能取唯一且最小的那个”这个我弄不出来,我查实group by price,uid也不行

请教大神该如何查询?

阅读 2k
1 个回答

唯一和最小都是聚合运算,但最小未必唯一,
所以你这个查询一个单独的语句应该是写不出的,得搞个有嵌套子查询或者带join的联表才行
一次查询 count(price) as c, group by uid,price where c = 1
结果基础上再查询 min(price) as m, group by uid

暂时没有mysql环境,就不调试了,逻辑是大概这样的,

顺便: 你这需求里,没说如果一个uid只有一个price,并且这个price 不唯一该怎么办,
按我说的逻辑 写sql,可能会存在有uid对应不上price的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进