【发布时间】:2015-12-18 20:18:24
【问题描述】:
我有一个表“玩家”如下 在哪里: ID 是主键。
- date = 他们玩的日期(仅 1 个月,因此可以从 1 到 30)
- 姓名 = 球员姓名
- Sport = 他们从事的运动,列表中可能有很多运动;但我只关注“足球”一个
这是桌子
+----+------------+-------+-------------+
| ID | Date | Name | Sport |
+----+------------+-------+-------------+
| 1 | 1 | A | football |
| 2 | 1 | A | soccer |
| 3 | 3 | A | tennis |
| 4 | 2 | B | tennis |
| 5 | 2 | B | football |
| 6 | 1 | C | basketball |
| 7 | 1 | C | tennis |
| 8 | 1 | C | fishing |
+----+------------+-------+-------------+
我想找出一天内参加 2 项以上运动的所有人(姓名和运动),其中一项运动必须是“足球”。
所以结果应该是这样的,
+----+------+------+----------+
| ID | Date | Name | Sport |
+----+------+------+----------+
| 1 | 1 | A | football |
| 2 | 1 | A | soccer |
| 4 | 2 | B | tenis |
| 5 | 2 | B | football |
+----+------+------+----------+
我们不计算名字“C”,因为他不踢足球(即使他一天参加超过 2 项运动)。
我试试
SELECT * FROM player GROUP BY Date, Name HAVING count(Date) > 1;
但不会给我想要的。
PS:此帖不是重复帖。这些答案在Finding duplicate values in MySQL 不会直接针对这个问题。这是查找具有重复值和条件的行。请删除“重复”标签,以便其他人可以从这个问题中受益。
【问题讨论】:
-
在发布问题之前搜索社区 - stackoverflow.com/questions/688549/…
-
我在发布之前阅读并搜索过。那些“分组依据”和“计数> 1)只将那些重复行组合在一起。但我想要的是显示那些重复行+运动必须是“足球”的要求
-
请帮忙,我似乎在任何地方都找不到类似的请求。谢谢!
-
@r00k,这不是类似的帖子!
-
Re 30:有些月份有 31 天。超过 2 项:您的示例数据和查询表明您关心 2 项或更多运动。 Re不会给我我想要的东西:你为什么不从踢足球的球员中分组等等?一天内参加 2 项以上运动的人(姓名和运动):您的意思是,在一个月的同一天参加 2 项以上运动的人的姓名和运动。
标签: mysql