【问题标题】:MySQL Select count, group by distinct - two columnsMySQL选择计数,按不同分组 - 两列
【发布时间】:2022-01-24 22:16:28
【问题描述】:

我想上Mysql:

  • 计算列 done 为
  • 获取跑步者ID
  • 但如果 runnerA 和 runnerB 是同一个人,则分组。

所以我想知道每个跑步者所在的行数,即使他在 runnerA 或 runnerB 中。

一个例子:

我的数据:

id id_runnerA id_runnerB done
1 12 5 1
2 20 12 1
3 12 1 3

结果应该是:

id_runner count
12 2
20 1
5 1

谢谢

【问题讨论】:

    标签: mysql group-by count distinct


    【解决方案1】:

    好像是这样的

    SELECT
      id_runner, count(*)
    FROM
      (
        SELECT id_runnera as id_runner FROM t WHERE done < 2
        UNION ALL
        SELECT id_runnerb FROM t WHERE done < 2
      ) x
    GROUP BY
      id_runner
    

    但是看看更多的测试数据会很有帮助

    【讨论】:

    • 谢谢,但结果有误。你想要什么数据?
    • 对不起,你是对的!我做错了,你解决了我的问题!谢谢
    • 我必须了解'UNION ALL'
    • UNION ALL 将两个结果集叠加在一起。列的数量和类型必须匹配。 Union all 保留两者的所有行。 UNION,相比之下,使用所有值对两个结果集进行重复数据删除,因此 N 100% 相同的行被压缩为一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2014-09-05
    相关资源
    最近更新 更多