【问题标题】:Get full row for lowest value with WHERE AND GROUP BY使用 WHERE AND GROUP BY 获取最低值的整行
【发布时间】:2014-03-22 07:02:08
【问题描述】:

我想显示一个预览页面,其中包含每个图片组的 1 张图片,位置最低且 Online=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 PictureID, COUNT(*) AS Total 
FROM Pictures 
WHERE MIN(Position) AND Online = 'Y' 
GROUP BY PictureGroup

【问题讨论】:

    标签: mysql sql group-by min


    【解决方案1】:

    很确定这就是你想要的:

    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
    

    【讨论】:

    • 已编辑以包含计数。
    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多