를 사용하여 사용하고 싶습니다 ROW_NUMBER()
…
max(ROW_NUMBER())
-> 를 얻으려면 또는 이것이 또한 모든 행의 수라고 생각합니다.
나는 노력했다 :
SELECT max(ROW_NUMBER() OVER(ORDER BY UserId)) FROM Users
하지만 작동하지 않는 것 같습니다 …
ROW_NUMBER()
주어진 정보를 사용 하려면 이름이 있고 이름이 어떤 행에서 왔는지 알고 싶습니다.
나는 그것이 # 1에 시도한 것과 비슷한 것이라고 가정합니다.
SELECT ROW_NUMBER() OVER(ORDER BY UserId) From Users WHERE UserName='Joe'
그러나 이것은 작동하지 않았습니다 …
어떤 아이디어?
답변
첫 번째 질문에 왜 그냥 사용하지 않습니까?
SELECT COUNT(*) FROM myTable
카운트를 얻을 수 있습니다.
두 번째 질문에서 행의 기본 키는 특정 행을 식별하는 데 사용해야하는 것입니다. 그 행 번호를 사용하지 마십시오.
기본 쿼리에서 Row_Number ()를 반환 한 경우
SELECT ROW_NUMBER() OVER (Order by Id) AS RowNumber, Field1, Field2, Field3
FROM User
그런 다음 5 행으로 돌아가려면 현재 행 번호를 가져 와서 다음 쿼리를 사용하여 currentrow -5가있는 행을 결정할 수 있습니다
SELECT us.Id
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
FROM User ) us
WHERE Row = CurrentRow - 5
답변
count()
총 행 수를 얻는 데 사용할 수있는 다른 사람들에게 동의하지만 다음과 같이 사용 하는 방법이 있습니다 row_count()
.
-
총 행 수를 얻으려면 :
with temp as ( select row_number() over (order by id) as rownum from table_name ) select max(rownum) from temp
-
name이 Matt 인 행 번호를 얻으려면 다음을 수행하십시오.
with temp as ( select name, row_number() over (order by id) as rownum from table_name ) select rownum from temp where name like 'Matt'
당신은 더 사용할 수 있습니다 min(rownum)
또는 max(rownum)
각각 매트의 첫 번째 또는 마지막 행을 얻을.
이것들은 매우 간단한 구현이었습니다 row_number()
. 보다 복잡한 그룹화에 사용할 수 있습니다. 하위 쿼리를 사용하지 않고 고급 그룹화에 대한 응답을 확인하십시오.
답변
테이블의 총 행 수를 리턴해야하는 경우 다른 방법으로 SELECT COUNT(*)
명령문 을 사용할 수 있습니다 .
때문에 SELECT COUNT(*)
행의 수를 반환하는 전체 테이블을 스캔한다, 그것은 큰 테이블에 대해 매우 시간이 오래 걸릴 수 있습니다. sysindexes
이 경우 시스템 테이블을 대신 사용할 수 있습니다 . ROWS
데이터베이스의 각 테이블에 대한 총 행 수를 포함 하는 열이 있습니다. 다음 select 문을 사용할 수 있습니다.
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('table_name') AND indid < 2
이렇게하면 쿼리 시간이 크게 줄어 듭니다.
답변
ROW_NUMBER()
1부터 시작하여 각 행에 대해 고유 한 숫자를 반환합니다.
ROW_NUMBER() OVER (ORDER BY 'Column_Name' DESC) as ROW_NUMBER
당신은 차이를 찾을 수 있습니다 Row_number()
, Rank()
그리고 Dense_Rank()
여기 .
답변
has 절이있는 첫 번째 레코드를 얻기 위해 이것을 사용할 수 있습니다
SELECT TOP(1) * , ROW_NUMBER() OVER(ORDER BY UserId) AS rownum
FROM Users
WHERE UserName = 'Joe'
ORDER BY rownum ASC
답변
SELECT num, UserName FROM
(SELECT UserName, ROW_NUMBER() OVER(ORDER BY UserId) AS num
From Users) AS numbered
WHERE UserName='Joe'
답변
여기서 질문과 관련이 없을 수 있습니다. 그러나 나는 그것을 사용할 때 유용 할 수 있음을 발견했다 ROW_NUMBER
–
SELECT *,
ROW_NUMBER() OVER (ORDER BY (SELECT 100)) AS Any_ID
FROM #Any_Table
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)