如何在Access SQL中仅按每个符合条件返回一行?

时间:2013-04-12 18:30:50

标签: ms-access

我的数据看起来像这样

CUSTID     POLICY     TYPE   RANDOMTHING   ETC

有时候每个CUSTID会有多个行,否则其他字段会有不同的值。我只希望每个CUSTID返回一行,只取第一行的值(忽略其余的)。

我已尝试将First应用于CUSTID,但它似乎无效。

1 个答案:

答案 0 :(得分:1)

我相信你想要像

这样的东西
SELECT t1.* 
FROM yourTable t1 INNER JOIN 
    (
        SELECT CUSTID, MIN(POLICY) AS MinOfPOLICY 
        FROM yourTable
        GROUP BY CUSTID
    ) t2 ON t1.CUSTID = t2.CUSTID AND t1.POLICY = t2.MinOfPOLICY
ORDER BY 1

在此示例中,t1t2是表别名。在大多数情况下,在构造多次引用同一个表的查询时,需要使用表别名来消除列引用的歧义。例如,您不能只说CUSTID,因为它不清楚您是CUSTID的第一个实例,还是第二个实例的yourTable

SQL语言允许通过在表名后面立即放置别名来为表提供别名,因此yourTable t1表示" yourTable,使用别名t1&# 34 ;.另一个别名t2GROUP BY子查询(括号内的子查询)的别名。