Получение n-ой строки в mssql - Что означает этот "sq"?
Нужно достать n-й ряд из таблицы. Я нашел этот запрос, который работает точно в соответствии с требованием.
SELECT TOP 1 name FROM (SELECT TOP 9 name FROM master..syslogins ORDER BY name ASC) sq ORDER BY name DESC
Не уверен, на что указывает "sq" в запросе, чтобы я мог настроить его под мое требование.
Может кто-нибудь дать мне знать, что "sq" в приведенном выше запросе указывает на??
Пытался:
SELECT TOP 1 user FROM (SELECT TOP 3 user FROM customers ORDER BY user ASC)sq ORDER BY user DESC
Ошибка: не указано имя столбца для столбца 1 в sq.
2 ответа
Решение
Используйте: [] для имен столбцов, которые соответствуют ключевым словам
SELECT TOP 1 [user] FROM (SELECT TOP 3 [user] FROM customers ORDER BY user ASC)sq ORDER BY [user] DESC
"sq" в вашем случае является псевдонимом для встроенного представления. Стандартному использованию псевдонима предшествует ключевое слово "as" (так что в вашем случае это будет переводиться как "как sq ". Псевдоним - это новое имя запроса и должен разделяться запросом как минимум одним пробелом.