我们有一项功能,允许我们创建SQL以基于嵌套查询从一个表中取回数据,该查询根据来自另一个表的匹配条件过滤记录。现在,我们需要能够根据nexted查询的前x个记录从第一个表中取回数据,而不是所有匹配的记录。例如,我们要像SQL Server - 需要根据嵌套级别返回数据
SELECT Name, Address, City, State, Zip
FROM CUSTOMERS
WHERE Customer_Location IN (SELECT TOP 100
CustomerID,
Rank() OVER PARTITION BY TID ORDER BY TerritoryName DESC) AS 'RANK'
FROM Territories
WHERE Nation = 'Canada')
但使用IN语句,到目前为止,没有很好的,因为我们只能返回一列,并使用EXISTS不工作,因为所有的存在确实是返回“TRUE “如果任何字段匹配(即使我们把链接放回主查询)。有谁知道我可以如何让这个工作?谢谢。
我不是很清楚你在这里要做什么。你的问题说你不能使用'IN',但在你明确给出的例子中可以。你正在计算'Rank',但是这对'TOP'没有影响。你正在匹配'Customer_Location'和'CustomerID',这看起来很奇怪。这是您的实际查询还是您在发布之前对其进行了过于简单的说明? – 2010-07-20 21:11:04