首页 > 解决方案 > SQL 从多个组中获取均匀分布的值

问题描述

我在 MySQL 中有这张表:

按组着色

我需要一个查询来获得这样的结果:

期望的结果

如您所见,该组位于 123,123,.. 序列中。如果某个组没有更多行,则跳过它。

每个组中项目的顺序并不重要,只要它们不同即可。

谢谢!!

标签: mysqlsqlsql-order-by

解决方案


这适用于 MySql 8.0。您提到颜色的顺序无关紧要,这将返回您寻求的顺序(1-2-3、1-2-3 等)。

    select groupid, color
    from (
        select groupid, color, 
        rank() over (partition by groupid order by color) as grouprank
        from table1)z
    order by grouprank, groupid

dbfiddle在这里:https ://www.db-fiddle.com/f/5DXNToRUNoonych1cjekph/0


推荐阅读