반응형
SQL Server의 select 문에 TOP가 있는 변수를 동적으로 만들지 않고 사용
declare @top int
set @top = 5
select top @top * from tablename
가능합니까?
아니면 그런 논리에 대한 아이디어(다이나믹 쿼리를 사용하고 싶지 않습니다)가 있습니까?
네, SQL Server 2005에서는 변수 사용이 가능합니다.top
절을 클릭합니다.
select top (@top) * from tablename
SQL Server 2005에서는 변수, 식 또는 문을 사용하여 TOP 절을 파라미터화할 수 있습니다.다음과 같은 작업을 수행할 수 있습니다.
SELECT TOP (@foo) a FROM table ORDER BY a
SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a
SELECT TOP (@foo + 5 * 4 / 2) a FROM table ORDER BY a
2005년 이후에는 이 스레드에 여러 개의 응답이 있기 때문에 이 작업을 수행할 수 있습니다.
SET ROWCOUNT 를 사용하면, 2k 로도 이것을 실현할 수 있습니다.
-- Works in all versions
SELECT TOP 10
-- Does not work on 2000
SELECT TOP (10)
SELECT TOP (@rows)
-- Works in both 2ooo and 2oo5
SET ROWCOUNT @max
SELECT *
FROM ...
SET ROWCOUNT 0
마지막으로 SET ROWCOUNT 0을 잊어버린 경우 제한은 유지됩니다.버그를 찾는 것이 매우 어려워집니다:-)
언급URL : https://stackoverflow.com/questions/1927450/use-variable-with-top-in-select-statement-in-sql-server-without-making-it-dynami
반응형
'source' 카테고리의 다른 글
SQL Server: UniqueIdentifier를 케이스 스테이트먼트 문자열로 변환 (0) | 2023.04.07 |
---|---|
sql 문에서 대괄호 []를 사용하는 이유는 무엇입니까? (0) | 2023.04.07 |
SQL Server에서 Forech를 쓰는 방법 (0) | 2023.04.07 |
엔티티 프레임워크 마이그레이션의 테이블 및 열 이름 변경 (0) | 2023.04.07 |
Springboot: org.hibernate.Mapping Exception:org.hibernate의 생성자를 가져올 수 없습니다.persister.parsister.parster.parsterSingleTableEntityPersister (0) | 2023.04.02 |