mysql:查找具有重复值加条件的行

标签 mysql

<分区>

我有一个表“播放器”如下 在哪里: ID为主键。

  • 日期 = 他们玩的日期(仅 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 中的那些答案 不会直接针对这个问题。这是查找具有重复值和条件的行。请删除“重复”标签,以便其他人可以从这个问题中受益。

最佳答案

你应该寻找这个:

pl1 有匹配的 player namedate 谁打过 football, pl2 包含计数,pl3 获取所有在特定日期玩过football 和更多游戏的玩家,然后您从 pl4

SELECT 
    pl4.*
FROM
    player pl4
        JOIN
    (SELECT 
        pl2.name, pl2.date, COUNT(pl2.name) numberofgames
    FROM
        player pl2
    JOIN (SELECT 
        date, name
    FROM
        player
    WHERE
        sport = 'football') pl1 ON (pl2.name = pl1.name
        AND pl2.date = pl1.date)
    GROUP BY pl2.name , pl2.date
    HAVING numberofgames > 1) pl3 ON (pl3.name = pl4.name
        AND pl3.date = pl4.date)

关于mysql:查找具有重复值加条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32706960/

相关文章:

php - 如何从多个索引查询中获取 [id] 索引

mysql - 如何仅比较时间(hh :mm:ss) in timestamp field in my sql. ?

mysql - SugarCRM 慢查询(在 MySQL 上)

MySQL 没有给出默认值时,时间戳的默认值无效。

mysql - 更改事件并将结束设置为空

mysql - 从 Mac Rails 应用程序连接到 Windows 7 计算机上运行的 MySQL?

mysql - 每个派生表必须有自己的别名 mysql 数据库

mysql - 慢查询问题 - 得到通知

mysql - 连接多列并在行内排序

php - 从 PHP 调用 MySql 存储过程显示错误