programing

SQL Server에서 마지막 행을 읽는 방법입니다.

showcode 2023. 4. 25. 23:47
반응형

SQL Server에서 마지막 행을 읽는 방법입니다.

SQL Server에서 마지막 행을 읽는 가장 효율적인 방법은 무엇입니까?

표는 고유 키로 색인화되어 있으며, "하단" 키 값은 마지막 행을 나타냅니다.

MS SQL을 사용하는 경우 다음을 시도할 수 있습니다.

SELECT TOP 1 * FROM table_Name ORDER BY unique_column DESC 
select whatever,columns,you,want from mytable
 where mykey=(select max(mykey) from mytable);

자동 채우기 기본 키 또는 날짜/시간 열(가능하면 기본 키)과 같이 테이블에 고유하게 식별되는 열이 필요합니다.그런 다음 다음을 수행할 수 있습니다.

SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1

»는 다음과 같습니다.ORDER BY column 그 열의 데이터에 따라 를 정렬하라고 하고, 그 열에 따라 결과를 정렬하라고 합니다.DESC결과를 반전시키도록 지시합니다(마지막을 먼저 배치함).그 후로는요.LIMIT 1이겁니다.

만약 당신의 아이디 중 일부가 정상이라면, 당신의 db에 어떤 순서가 있을 것이라고 생각합니다.

SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)

아래 쿼리는 정렬 가능한 열 없이 최고의 성능을 발휘하는 SQL Server에 사용할 수 있을 것 같습니다.

SELECT * FROM table 
WHERE ID not in (SELECT TOP (SELECT COUNT(1)-1 
                             FROM table) 
                        ID 
                 FROM table)

이해하셨기를 바랍니다...:)

SQL Server 2008에서 sql 쿼리에서 last를 사용하려고 했지만 "last"는 인식되는 기본 제공 함수 이름이 아닙니다.

그래서 결국 다음을 사용하게 되었습니다.

select max(WorkflowStateStatusId) from WorkflowStateStatus 

마지막 행의 ID를 가져옵니다.사용할 수도 있습니다.

Declare @i int
set @i=1
select WorkflowStateStatusId from Workflow.WorkflowStateStatus
 where WorkflowStateStatusId not in (select top (
   (select count(*) from Workflow.WorkflowStateStatus) - @i ) WorkflowStateStatusId from .WorkflowStateStatus)

last_value: last_value를 사용할 수 있습니다.SELECT LAST_VALUE(column) OVER (PARTITION BY column ORDER BY column)...

제 데이터베이스 중 하나에서 테스트했는데 예상대로 작동했어요.

https://msdn.microsoft.com/en-us/library/hh231517.aspx에서 de 설명서를 확인할 수도 있습니다.

SELECT TOP 1 id from comission_fees ORDER BY id DESC 

OFFSET그리고요.FETCH NEXT는 결과를 표시하면서 SQL 페이징을 수행할 수 있는 SQL Server 2012의 기능입니다.

»는 다음과 같습니다.OFFSET인수는 결과 및 결과에서 행을 반환할 시작 행을 결정하는 데 됩니다.FETCH인수는 행 수 집합을 반환하는 데 사용됩니다.

SELECT *
FROM table_name
ORDER BY unique_column desc
OFFSET 0 Row
FETCH NEXT 1 ROW ONLY

MS SQL 데이터베이스 2005에 대한 테이블의 마지막 행을 검색하려면 다음 쿼리를 사용할 수 있습니다.

select top 1 column_name from table_name order by column_name desc; 

참고: MS SQL 데이터베이스 2005에 대한 테이블의 첫 번째 행을 가져오려면 다음 쿼리를 사용할 수 있습니다.

select top 1 column_name from table_name; 

정렬된 열이 없는 경우 각 줄의 실제 ID를 사용할 수 있습니다.

SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot], 
              T.*
FROM MyTable As T
order by sys.fn_PhysLocFormatter(%%physloc%%) DESC
SELECT * from Employees where [Employee ID] = ALL (SELECT MAX([Employee ID]) from Employees)

이렇게 하면 마지막 레코드를 가져오고 Access DB의 필드를 업데이트할 수 있습니다.

갱신하다 compalints SET tkt = addzone &'-'& customer_code &'-'& sn where sn in (select max(sn) from compalints )

복제된 테이블이 있는 경우 localDatabase에서 Identity=1000을, clientDatabase에서 Identity=2000을 가질 수 있으므로, 마지막 ID를 잡을 경우 항상 현재 연결된 데이터베이스의 마지막 ID가 아닌 클라이언트에서 마지막 ID를 찾을 수 있습니다.따라서 마지막으로 연결된 데이터베이스를 반환하는 가장 좋은 방법은 다음과 같습니다.

SELECT IDENT_CURRENT('tablename')

표의 "마지막 값"이 아니라 금융상품당 마지막 값입니다.동일하지는 않지만 "지금 어떻게 하고 있는지"를 우러러보려는 일부에게는 적절하다고 생각합니다.또한 RowNumber()와 CTE를 사용했고 그 전에는 단순히 1을 가져와서 [column] description으로 정렬했습니다.하지만 우리는 ...해야 합니다.

SQL Server 2017을 사용하고 있으며, 전 세계 모든 거래소에서 모든 틱을 기록하고 있으며, 하루에 120억 틱까지 보유하고 있으며, 주어진 거래소의 볼륨과 틱(입찰, 요청, 거래) 속성을 포함하여 각 입찰, 요청 및 거래를 저장합니다.

이 표에는 주어진 계약에 대한 253가지 유형의 틱 데이터(통계 정보)가 있으며, 마지막 거래 가격은 틱 유형=4이므로 사용하는 가격의 "마지막"을 얻어야 할 때 다음과 같이 표시됩니다.

select distinct T.contractId,
LAST_VALUE(t.Price)over(partition by t.ContractId order by created ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
from [dbo].[Tick] as T
where T.TickType=4

제 개발 시스템에서 실행 계획을 볼 수 있습니다. 매우 효율적이며, Exchange Import ETL이 테이블에 데이터를 주입하는 동안 4초 안에 실행됩니다. 잠금으로 인해 속도가 느려질 것입니다.그게 바로 라이브 시스템이 작동하는 방식입니다.85,697,659개의 행에 대해 실행 계획을 수립합니다.

매우 간단합니다.

TableName 오더에서 상위 10 *를 1개씩 선택합니다.

SELECT * FROM TABLE WHERE ID = (SELECT MAX(ID) FROM TABLE)

난 거의 확신해요:

SELECT last(column_name) FROM table

비슷한 것을 사용하기 때문입니다.

SELECT last(id) FROM Status

언급URL : https://stackoverflow.com/questions/177323/how-to-read-the-last-row-with-sql-server 입니다.

반응형