您的位置:首页 > 新闻 > 会展 > Mysql 查询当前日期下某个字段重复且有多条记录的数据

Mysql 查询当前日期下某个字段重复且有多条记录的数据

2025/1/14 21:44:09 来源:https://blog.csdn.net/martian665/article/details/140627226  浏览:    关键词:Mysql 查询当前日期下某个字段重复且有多条记录的数据

比如有一个patient表,表结构如下:

CREATE TABLE patient (patientID INT,code VARCHAR(255),InsertDate VARCHAR(8) -- 形如 20240712 的日期格式
);

        要查询在当前日期下,patientID 重复且有多条记录的数据。首先,我们需要获取当前日期,然后基于这个日期查询满足条件的记录。

完整的SQL查询语句步骤:

  1. 获取当前日期并将其格式化为 YYYYMMDD 形式。
  2. 查找在当前日期下,patientID 重复且有多条记录的数据。
    -- 获取当前日期,假设当前日期为 20240723
    SELECT CURDATE(); -- 输出:2024-07-23-- 将日期格式化为 YYYYMMDD 形式
    SELECT DATE_FORMAT(CURDATE(), '%Y%m%d'); -- 输出:20240723
    

    假设当前日期为 20240723,那么查询语句如下:

    SELECT patientID
    FROM patient
    WHERE InsertDate = DATE_FORMAT(CURDATE(), '%Y%m%d')
    GROUP BY patientID
    HAVING COUNT(*) > 1;
    

 

这个查询语句解释如下:

  1. SELECT patientID:选择 patientID 列。
  2. FROM patient:从 patient 表中查询。
  3. WHERE InsertDate = DATE_FORMAT(CURDATE(), '%Y%m%d'):筛选出 InsertDate 为当前日期的记录。
  4. GROUP BY patientID:按 patientID 分组。
  5. HAVING COUNT(*) > 1:只选择那些组内记录数大于1的 patientID,即重复且有多条记录的 patientID

如果你需要查询这些重复 patientID 对应的所有详细记录,可以使用一个子查询来完成:

SELECT *
FROM patient
WHERE patientID IN (SELECT patientIDFROM patientWHERE InsertDate = DATE_FORMAT(CURDATE(), '%Y%m%d')GROUP BY patientIDHAVING COUNT(*) > 1
) AND InsertDate = DATE_FORMAT(CURDATE(), '%Y%m%d');

 这个查询语句会返回所有在当前日期下 patientID 重复的记录的详细信息。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com