We just came across this in an old production stored proc (there is a lot more going on in here, but this is in one leg of its logic). Why would someone ever select top 0 ro
Its a way of getting an empty set; for example to create a new empty table with the same columns as an existing one;
SELECT TOP 0 * INTO new_table FROM old_table
Or to act a as source for column names
Or as a way to return column details but no data to a client layer
Or as a query to check connectivity
Its the same as;
SELECT * FROM table WHERE 0=1