SubQuery Only First Match

时间:2014-10-16 16:20:20

标签: sql ms-access ms-access-2010

使用白痴创建的表格。有问题的表格没有记录ID,包括部件号和数量' s。一些零件编号将重复数十次,没有数量,有些则带有。如果任何记录中的部件号具有数量,我希望该部件号只需一次,以便该子部件不会一次向主要的多个值输入。

SELECT d046d, e024a
FROM 20121
WHERE d046d=(select sc.d046d from 20121 as sc where e024a >0)

这将失败,因为它会在子查询中找到多个记录。我已尝试过DISTINCT和FIRST,并在TOP 1中订购。

当主要查询的一部分完成时,所有操作都会失败。

3 个答案:

答案 0 :(得分:1)

SELECT TOP 1 b.d046d, a.e024a
FROM 20121 a
inner join
(select sc.d046d as d046d from 20121 as sc where e024a >0) b
on a.d046d = b.d046d

这不是WHERE子句的合适解决方案。我认为你需要加入子查询,作为自我加入。从那里你可以选择出现的结果集的前1位。您可以根据需要使用别名。

答案 1 :(得分:1)

您不需要WHERE的子查询。如果你只想要第一条记录,你可以用TOP获得它 子句,按

添加顺序
SELECT TOP 1 d046d, e024a
FROM 20121
WHERE  e024a >0
ORDER BY e024a desc

答案 2 :(得分:1)

使用

SELECT DISTINCT 
    d046d, 
    e024a
FROM 
    20121
WHERE 
    e024a >0