如何为列中的每个不同值只获取一行?

时间:2010-03-17 21:33:18

标签: ms-access

我有一个关于Access的问题。例如,我有一个包含以下数据的表:

  NAME         | ADDRESS
  John Taylor  | 33 Dundas Ave.
  John Taylor  | 55 Shane Ave.
  John Taylor  | 786 Edward St.
  Ted Charles  | 785 Bloor St.
  Ted Charles  | 90 New York Ave.

我希望每个人都能获得一条记录,无论地址如何。例如:

  NAME        | ADDRESS
  John Taylor | 33 Dundas Ave.
  Ted Charles | 90 New York Ave.

这可以仅通过查询完成吗? 我尝试使用DISTINCT,但是当我选择两个列时,组合总是唯一的,所以我得到了所有的行。

谢谢!

2 个答案:

答案 0 :(得分:4)

如果您不关心要显示的地址,则应遵循以下规则:

SELECT  NAME,
        MIN(ADDRESS) AS ADDRESS
FROM    THETABLE
GROUP BY NAME

答案 1 :(得分:0)

稍微多一点,使用MIN将按字母顺序返回第一个地址。 Access有两个类似的聚合函数,称为FIRST和LAST,它们将根据表的排序顺序返回第一个或最后一个地址。

例如,如果你采取

ID | NAME |地址
1 |约翰泰勒| 55 Shane Ave.
2 |约翰泰勒| 786 Edward St.
3 |约翰泰勒| 33 Dundas Ave.
4 |特德查尔斯| 785 Bloor St.
5 |特德查尔斯|纽约大道90号

SELECT  NAME, 
    MIN(ADDRESS) AS ADDRESS 
FROM    THETABLE 
GROUP BY NAME 

将返回

约翰泰勒| 33 Dundas Ave.
特德查尔斯| 785 Bloor St.

SELECT  NAME, 
    FIRST(ADDRESS) AS ADDRESS 
FROM    THETABLE 
GROUP BY NAME 

会给你

约翰泰勒| 55 Shane Ave.
特德查尔斯| 785纽约大道

HTH