2010-03-17 129 views
0

我有一个关于Access.If问题,例如我有以下数据表:如何获取列中每个不同值的唯一一行?

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. 

我想获得一个记录每个人无论address.For例子:

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

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

谢谢!

回答

4

如果你不在乎要显示的地址,然后下面应该工作:

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

谢谢范!有用。 – Chavdar 2010-03-17 21:54:11

+0

太好了,很高兴帮忙。 – van 2010-03-17 22:16:50

0

随着一点点额外的,使用MIN将按照字母顺序返回第一个地址。 Access有两个类似的集合函数称为FIRST和LAST,它将根据表的排序顺序返回第一个或最后一个地址。

例如,如果你拿

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

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

将返回

约翰·泰勒|登打士大道33号
Ted Charles | 785布鲁尔街

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

会给你

约翰·泰勒| 55 Shane Ave.
Ted Charles |纽约大街785号

心连心

+0

从技术上讲,它是具有First/Last功能的Jet/ACE。您可以通过在您选择的字段上设置排序顺序来获得First/Last的可预测结果。在您提供的发明数据中,ORDER BY在ID上,与地址字段的内容相比,该ID将是半随机的。 – 2010-03-18 21:51:34

相关问题