Access SQL:仅选择组合字段中出现一次的记录

时间:2017-08-27 09:11:38

标签: sql ms-access unique

我有一个访问数据库,其中包含几个表中的地址信息。 我创建了一个SQL语句来在查询中获取组合信息,这样就可以了。

我的下一步是只获取数据库中只有一次出现的记录,但我似乎无法让它工作。

到目前为止,我的代码将返回:(示例)

combination lat/long postal_code letter_part house_number street name
123123               1234        aa          1            teststreet
123124               1234        aa          3            teststreet
123124               1234        aa          5            teststreet
123124               1234        aa          7            teststreet
123124               1234        aa          9            teststreet
123125               1234        aa          5            teststreet

我想只提取第一个和最后一个记录,因为它们的组合只出现一次。 最终结果中不需要组合字段,只是尝试使其工作的方法。

我的代码:

SELECT
[Perceel.lengtegraad] & [Perceel.breedtegraad] As Combi,
Pcreeks.wijkcode, 
Pcreeks.lettercombinatie, 
[huisnr] & " " & [huisnr_bag_letter] & " " & [huisnr_bag_toevoeging] AS 
HnrLetter, 
Straat.straatnaam
FROM 
(Provincies 
INNER JOIN (Plaats 
INNER JOIN ((Gemeente 
INNER JOIN Pcreeks 
ON
Gemeente.gemeenteid = Pcreeks.gemeenteid) 
INNER JOIN Perceel 
ON 
Pcreeks.reeksid = Perceel.reeksid) ON (Gemeente.gemeenteid = 
Plaats.gemeenteid) AND (Plaats.gemeenteid = Pcreeks.gemeenteid) AND 
(Plaats.plaatsid = Pcreeks.plaatsid)) ON Provincies.provincicode = 
Pcreeks.provinciecode) INNER JOIN Straat ON (Pcreeks.straatid = 
Straat.straatid) AND (Plaats.plaatsid = Straat.plaatsid) 
where Pcreeks.wijkcode = "1234" AND Pcreeks.lettercombinatie = "AA";

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

这不是最优雅,但您可以重复相同的查询以仅过滤具有一个元素的组。

WHERE Combi IN (
  SELECT Combi FROM (<PASTE_YOUR_QURY_HERE>) AS something
  GROUP BY Combi
  HAVING count(*) = 1
)

PS。这对性能也不利 - 你应该修改子查询以删除不必要的连接。)