How to delete the top 1000 rows from a table using Sql Server 2008?
sql, sql-delete, sql-server
Solution
The code you tried is in fact two statements. A `DELETE` followed by a `SELECT`.
You don't define `TOP` as ordered by what.
For a specific ordering criteria deleting from a CTE or similar table expression is the most efficient way.
;WITH CTE AS
(
SELECT TOP 1000 *
FROM [mytab]
ORDER BY a1
)
DELETE FROM CTE
Problem
I have a table in SQL Server. I would like to delete the top 1000 rows from it. However, I tried this, but I instead of just deleting the top 1000 rows it deleted all the rows in the table. Here is the code: ``` delete from [mytab] select top 1000 a1,a2,a3 from [mytab] ```