【问题标题】:SQL query, distinct rows neededSQL 查询,需要不同的行
【发布时间】:2010-06-25 17:57:41
【问题描述】:

我的下表结构如下:

所以基本上如您所见,该部门每隔几年就会更改名称。以 16 号为例。我想要一个仅在日期最大时才获取名称的选择查询。我该怎么做?

【问题讨论】:

  • 访问表,使用access 2007

标签: sql ms-access distinct


【解决方案1】:
select ID, Name from departments o 
where o.thedate=
  (select max(i.thedate) from departments i where o.id=i.id)

【讨论】:

    【解决方案2】:
    SELECT ID, 
    First(Name) AS FirstOfName, First(DateChange) AS FirstOfDateChange
    FROM departments
    GROUP BY ID
    ORDER BY First(DateChange) DESC;
    

    【讨论】:

    • +1 表示 Alt。解决方案。按ID分组让我失望,但在这种情况下,它是重复的数据字段。
    【解决方案3】:

    这张表的主键是什么?这会通过名称比较对同一个表进行子查询。

    SELECT
        id,
        name,
        date
    FROM table
    WHERE name = (SELECT TOP 1 name
                  FROM table AS subtable
                  WHERE subtable.name = table.name
                  ORDER BY date DESC)
    

    【讨论】:

      【解决方案4】:

      选择 d.* 来自部门 d 内连接(选择 pk 从部门 按 ID 分组 有 theDate=MAX(theDate)) m ON m.pk=d.pk WHERE [名称]="部门"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2016-01-05
        • 1970-01-01
        • 2019-05-23
        相关资源
        最近更新 更多