【问题标题】:How to filter old entries with unique id out of SQL query如何从 SQL 查询中过滤具有唯一 ID 的旧条目
【发布时间】:2012-06-25 09:17:44
【问题描述】:

我有一个表和一个关系

我可能有 10 个提交,但是当我查询数据库时,我只想获取具有唯一 CaseId 的那些,并且返回的应该是具有最新日期的那个。是否可以(并且建议)在单个查询中执行此操作,还是应该在我获取数据的 asp.nets 代码中进行过滤?

编辑:新图片

在这里你可以看到我显示了许多具有相同案例 id 的项目,我只想显示最新的一个(基于日期)

这是我当前的 sql 查询

SELECT Submission.Id, Date, center.Name as CenterName, center.Id as CenterId, subject.Name as SubjectName, subject.Id as SubjectId, EmployeeName, Reason, Description, Explanation, Done, ChiefLevel, Action, CaseId 
                    FROM Submission, subject, center
                    WHERE center.Id=CenterId AND subject.Id=SubjectId
                    ORDER BY Date DESC;

【问题讨论】:

  • 一个主题可以有多个提交。你不想所有的提交都是独一无二的吗?我遗漏了一些东西,你能详细说明一下吗?
  • I only want to get those with a Unique CaseId你能详细说明一下吗?
  • 添加了更多图片和文字以澄清

标签: asp.net mysql sql database


【解决方案1】:
SELECT caseid 
FROM 
( 
SELECT caseid, max(date) AS max_date 
FROM submission 
GROUP BY caseid 
) a 
JOIN subject t ON a.subjectid=t.id

【讨论】:

    【解决方案2】:

    我的QUERY最终是这样的

    SELECT s.Id, s.Date, c.Name as CenterName, c.Id as CenterId, su.Name as SubjectName, su.Id as SubjectId, s.EmployeeName, s.Reason, s.Description, s.Explanation, s.Done, s.ChiefLevel, s.Action, s.CaseId
                        FROM submission as s
                          INNER JOIN 
                          ( 
                            SELECT CaseId, MAX(Date) AS MaxDateTime 
                              FROM submission 
                            GROUP BY CaseId 
                          ) as groupeds 
                          ON  s.CaseId = groupeds.CaseId 
                          AND s.`Date` = groupeds.MaxDateTime 
                          INNER JOIN
                          (
                            SELECT Id, Name 
                              FROM subject
                          ) as su 
                          ON su.Id=SubjectId
                          INNER JOIN 
                          (
                            SELECT Id, Name 
                              FROM center
                          ) as c 
                          ON c.Id=CenterId;
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多