如何 select 前 20% 的行,然后查找那里是否存在行

How to select top 20 percent of rows and then find if a row exists there

我正在定位这样的行

SELECT TOP 20 PERCENT * FROM MyTable WHERE MyTable.Date > '2015-08-13'

现在这可行了,但是,我试图找出此处是否存在特定行,但不确定如何执行此操作,感谢您的帮助,谢谢!

使用 CTE(常见 table 表达式)是一种方法。它强制引擎首先解析前 20%,从而生成一个您可以过滤的子集。

With cte as (SELECT TOP 20 PERCENT * FROM MyTable WHERE MyTable.Date > '2015-08-13')
SELECT * 
FROM cte 
WHERE columnName = 'Somevalue';

另一种方法是使用内联视图...(相同的概念只是不如 CTE 干净)并且在 CTE 出现之前就已在引擎中可用。

SELECT * 
FROM  
 (SELECT TOP 20 PERCENT * 
  FROM MyTable 
  WHERE MyTable.Date > '2015-08-13') inline
WHERE columnName = 'Somevalue'