mysql 是否可以进一步过滤MAX结果?

u3r8eeie  于 2022-11-28  发布在  Mysql
关注(0)|答案(1)|浏览(217)

我有一张这样的table
A)

正如您所看到的,同一个ID可以有多个Revision ID
现在,我可以通过使用MAXGROUP BY获取每个ID的所有最新修订版,如下所示:

SELECT *, MAX(revision_id)
FROM content_moderation_state_field_revision
GROUP BY id DESC;

B)

如此处所示,修订ID 47141是ID 3282的最新修订版本
“我的目标是"
我想做的是进一步过滤这些(屏幕截图B)结果,仅过滤最新/最高版本的published仲裁状态。
不过,如果我试

SELECT *, MAX(revision_id)
FROM content_moderation_state_field_revision
WHERE moderation_state = 'published'
GROUP BY id DESC;

我得到
C)

这不是我想要的,因为它不再获取每个ID的最新/最高修订版。47139不是3282的最高/最新修订版,而是47141,如屏幕截图B所示。
我在这里只想显示3278行,因为这是唯一一行,它也具有最新/最高修订版本,并具有已发布的审核状态(请参见屏幕截图B)
"在一个疯子"
我只想选择“已发布”且具有最大revision_id的行
我怎样才能实现我的目标?这可能吗?

nfs0ujit

nfs0ujit1#

可以将条件逻辑与HAVING子句沿着使用,例如

SELECT id, 
       MAX(revision_id) AS revision_id,
       MAX(moderation_state) AS moderation_state
  FROM content_moderation_state_field_revision
 GROUP BY id
HAVING MAX(CASE WHEN moderation_state = 'published' THEN revision_id END) = 
       MAX(revision_id);

相关问题