Mysql 获取包含WHERE和GROUP BY的最低值的完整行

Mysql 获取包含WHERE和GROUP BY的最低值的完整行,mysql,sql,group-by,min,Mysql,Sql,Group By,Min,我想显示一个预览页面,每个图片组有一张图片,位置最低,在线=Y 添加我想在线获取该组的全部图片(如果可能) 我有一个图片库的下表: PicID(autoinc) | PicGrp(INT) | Online(Y|N) | Pos(0-10,unique within Grp) | ... | Description 1 | 1 | Y | 0 2 | 1 | Y | 1 3 | 2 | N | 1 4 | 2 | N | 3 5 | 2 | Y | 7 6 | 2 | Y | 2 7 | 2

我想显示一个预览页面,每个图片组有一张图片,位置最低,在线=Y 添加我想在线获取该组的全部图片(如果可能)

我有一个图片库的下表:

PicID(autoinc) | PicGrp(INT) | Online(Y|N) | Pos(0-10,unique within Grp) | ... | Description

1 | 1 | Y | 0
2 | 1 | Y | 1
3 | 2 | N | 1
4 | 2 | N | 3
5 | 2 | Y | 7
6 | 2 | Y | 2
7 | 2 | Y | 10
因此,我希望:

1 | 1 | Y | 0 | ... | Description | Total(2)
6 | 2 | Y | 2 | ... | Description | Total(3)
一个方向..当然不行:-)


很确定这就是你想要的:

select y.picid, y.picgrp, y.online, y.pos, count(z.picid) as total
  from pictures y
  join pictures z
    on y.picgrp = z.picgrp
   and y.online = z.online
 where y.pos = (select min(x.pos)
                  from pictures x
                 where x.picgrp = y.picgrp
                   and x.online = 'Y')
   and y.online = 'Y'
 group by y.picid, y.picgrp, y.online, y.pos

编辑以包括计数。
select y.picid, y.picgrp, y.online, y.pos, count(z.picid) as total
  from pictures y
  join pictures z
    on y.picgrp = z.picgrp
   and y.online = z.online
 where y.pos = (select min(x.pos)
                  from pictures x
                 where x.picgrp = y.picgrp
                   and x.online = 'Y')
   and y.online = 'Y'
 group by y.picid, y.picgrp, y.online, y.pos