Có thể làm điều gì đó tương tự như sau trong SQL Server 2012 không?
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
Tôi đã thử sử dụng cú pháp này và nhận được một lỗi. Nếu điều này là không thể, sử dụng bảng tạm thời có phải là cách tốt nhất để thực hiện điều này?
Từ BOL - Hướng dẫn tạo và sử dụng biểu thức bảng chung , bạn không thể. Tốt nhất là sử dụng bảng tạm thời .
—
Kin Shah
Tại sao không
—
ypercubeᵀᴹ
IF EXISTS (SELECT * FROM table)
?
@ypercube Ví dụ tôi cung cấp không phải là bản sao chính xác của truy vấn tôi đang làm việc - xem các bảng có hàng không đủ trong những gì tôi đang cố gắng không. Tôi đoán nó sẽ chính xác hơn để nói
—
Weston Sankey
WHERE rn = 2
Sau đó, bạn cũng có thể nói
—
Aaron Bertrand
IF EXISTS (SELECT column FROM dbo.table GROUP BY column HAVING COUNT(*)>1)