MySQL - 根据特定值的 GROUP 和 ORDER 选择 LIMIT 1 ID

问题描述 投票:0回答:0

我正在编写代码来清理重复值,并且仅当存在重复值时,我才需要为每个 campaign_main_ref_id 保存最高的 item_state_c ID。如您所见,只有活动 92 和 94 有多个项目。问题是无论我做什么,我永远无法获得 GROUP BY 结果以根据 item_state_c 的最高 (DESC) 排序顺序返回 ID。为清楚起见,这是源表:

问题是它永远不会根据 item_state_c = 3 为活动 92 返回 ID 45893。如您所见,我在我的 CTE 参考中按 item_state_c DESC 排序 - 但 GROUP BY 忽略了这一点。

那么,由于项目状态,我如何才能在这种情况下使用 GROUP BY 为活动 92 选择 45893?这是它目前所做的:

我需要的是一个 SQL 调用,它为具有多个项目的每个活动返回具有最高 item_state_c 的 ID。如果没有 GROUP BY,我不知道该怎么做,根据我的理解,ORDER BY 仅在 GROUP BY 之后对数据进行排序,所以我不知所措;特别是因为在我分组的参考表中设置顺序似乎没有任何影响。我只是不明白 GROUP BY 如何确定它选择的 ID,因为它是中间 ID 号。

任何帮助将不胜感激。

mysql group-by sql-order-by
© www.soinside.com 2019 - 2024. All rights reserved.