如何 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'
我正在定位这样的行
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'