programing

SQL Server로 마지막 행을 읽는 방법

nasanasas 2020. 9. 23. 07:41
반응형

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);

자동 채우기 기본 키 또는 datetime 열 (가급적이면 기본 키)과 같이 테이블에 고유하게 식별되는 열이 필요합니다. 그런 다음 이렇게 할 수 있습니다.

SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1

ORDER BY column그 열의 데이터에 따른 결과를 rearange하도록 지시하고는 DESC(즉 제 마지막 퍼팅) 결과를 반전을 말한다. 그 후에는 LIMIT 1한 행만 다시 전달 하도록 지시합니다.


귀하의 ID 중 일부가 순서대로 정렬되어 있으면 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 서버 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)

이 시도

SELECT id from comission_fees ORDER BY id DESC LIMIT 1

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

내 데이터베이스 중 하나에서 테스트했는데 예상대로 작동했습니다.

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


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; 

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 )


정렬 된 열이없는 경우 각 행의 물리적 ID를 사용할 수 있습니다.

SELECT top 1 sys.fn_PhysLocFormatter(%%physloc%%) AS [File:Page:Slot], 
              T.*
FROM MyTable As T
order by sys.fn_PhysLocFormatter(%%physloc%%) DESC

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

SELECT IDENT_CURRENT('tablename')

나는 테이블에서 "마지막 가치"를 얻는 것이 아니라 금융 상품당 마지막 가치를 얻고 있습니다. 똑같지는 않지만 "지금 어떻게되었는지"를 찾고자하는 사람들과 관련이 있다고 생각합니다. 또한 RowNumber () 및 CTE를 사용하고 그 전에는 단순히 1을 취하고 [column] desc로 정렬했습니다. 그러나 우리는 더 이상 ...

I am using SQL server 2017, we are recording all ticks on all exchanges globally, we have ~12 billion ticks a day, we store each Bid, ask, and trade including the volumes and the attributes of a tick (bid, ask, trade) of any of the given exchanges.

We have 253 types of ticks data for any given contract (mostly statistics) in that table, the last traded price is tick type=4 so, when we need to get the "last" of Price we use :

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

You can see the execution plan on my dev system it executes quite efficient, executes in 4 sec while the exchange import ETL is pumping data into the table, there will be some locking slowing me down... that's just how live systems work. execution plan against 85,697,659 rows


SELECT *

FROM table_name

ORDER BY unique_column desc

OFFSET 0 Row

FETCH NEXT 1 ROW ONLY


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

I am pretty sure that it is:

SELECT last(column_name) FROM table

Becaause I use something similar:

SELECT last(id) FROM Status

참고URL : https://stackoverflow.com/questions/177323/how-to-read-the-last-row-with-sql-server

반응형