是否可以在SQL Server 2012中执行与以下类似的操作?
IF EXISTS (
WITH DATA AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY column ORDER BY Column) AS rn
FROM table )
SELECT *
FROM DATA
WHERE rn = 2 )
BEGIN
...
END
我尝试使用此语法并收到错误。如果无法做到这一点,使用临时表是否是实现此目的的最佳方法?
从BOL-创建和使用公用表表达式的准则中,您无法做到。最好是使用临时表。
—
Kin Shah
为什么不
—
ypercubeᵀᴹ
IF EXISTS (SELECT * FROM table)
呢?
@ypercube我提供的示例不是我正在使用的查询的精确副本-查看表是否包含行对于我尝试的操作是不够的。我想这样说可能更准确
—
Weston Sankey
WHERE rn = 2
然后您也可以说
—
亚伦·伯特兰
IF EXISTS (SELECT column FROM dbo.table GROUP BY column HAVING COUNT(*)>1)