programing

SQL에서 테이블의 마지막 레코드를 선택하려면 어떻게 해야 합니다.

telecom 2023. 4. 10. 20:55
반응형

SQL에서 테이블의 마지막 레코드를 선택하려면 어떻게 해야 합니다.

테이블에서 모든 레코드를 선택하기 위한 샘플 코드입니다.그 테이블의 마지막 기록을 어떻게 선택하는지 누가 보여줄 수 있나요?

select * from table

사용할 때:SELECT * FROM TABLE ORDER BY ID DESC LIMIT'LIMIT' 근처에 1행: 잘못된 구문이 있습니다.사용하는 코드는 다음과 같습니다.

private void LastRecord()
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["HELPDESK_OUTLOOKConnectionString3"].ToString());

    conn.Open();
    SqlDataReader myReader = null;
    SqlCommand myCommand = new SqlCommand("SELECT * FROM HD_AANVRAGEN ORDER BY " +
                "aanvraag_id DESC LIMIT 1", conn);
    myReader = myCommand.ExecuteReader();
    while (myReader.Read())
    {
        TextBox1.Text = (myReader["aanvraag_id"].ToString());
        TextBox1.Text += (myReader["wijziging_nummer"].ToString());
        TextBox1.Text += (myReader["melding_id"].ToString());
        TextBox1.Text += (myReader["aanvraag_titel"].ToString());
        TextBox1.Text += (myReader["aanvraag_omschrijving"].ToString());
        TextBox1.Text += (myReader["doorlooptijd_id"].ToString());
        TextBox1.Text += (myReader["rapporteren"].ToString());
        TextBox1.Text += (myReader["werknemer_id"].ToString());
        TextBox1.Text += (myReader["outlook_id"].ToString());
    }
}

더 이상의 정보가 없다면 우리가 할 수 있는 최선의 데이터베이스 등은 다음과 같습니다.

SQL 서버

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MySql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

SQL-Database마지막 행을 가져오려면 다음 SQL 문자열을 사용합니다.

SELECT * FROM TableName WHERE id=(SELECT max(id) FROM TableName);

출력:

db의 마지막 줄!

ID 열이 있는 경우:

SELECT TOP 1 *
  FROM table
 ORDER
    BY Id DESC;

또한 SQL Server에서도 사용할 수 있습니다.MySQL을 사용해야 할 것 같습니다.

SELECT *
  FROM table
 ORDER
    BY Id DESC
 LIMIT 1

하지만 100% 확신할 수는 없어요.

편집

다른 답변을 보면 MySQL 문장이 정확하다고 100% 확신할 수 있습니다. :o)

편집

방금 당신의 최근 댓글을 봤어요.다음과 같은 작업을 할 수 있습니다.

SELECT MAX(Id)
  FROM table

그러면 가장 높은 ID 번호가 표시됩니다.

SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1

예, 이것은 mysql입니다.SQL Server:

SELECT TOP 1 * FROM Table ORDER BY ID DESC

MS SQL Server는 ANSI SQL을 지원했습니다.FETCH FIRST지금까지 몇 년째:

SELECT * FROM TABLE
ORDER BY ID DESC 
OFFSET 0 ROWS FETCH FIRST 1 ROW ONLY

(대부분의 최신 데이터베이스와 연동됩니다.)

테이블 설계에서는 항상 다음과 같은 자동 행 식별자를 사용하는 것이 좋습니다.

 [RowID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL

마지막 행은 다음 순서로 식별할 수 있습니다.

 select * from yourTable where rowID =  @@IDENTITY 

자기 증가 필드가 있는 경우(예:ID그럼 다음과 같은 작업을 수행할 수 있습니다.SELECT * FROM foo WHERE ID = (SELECT max(ID) FROM foo)

거의 모든 답변은 ID 열이 정렬되어 있다고 가정합니다(아마도 자동으로 증분됩니다).그러나 ID 열이 정렬되지 않은 경우도 있으므로 ORDER BY 문장은 의미가 없습니다.

마지막으로 삽입된 ID가 항상 가장 높은 ID가 아닌 마지막(고유한) 항목일 수 있습니다.

이러한 상황에서 생각할 수 있는 해결책 중 하나는 행 ID를 즉시 작성하는 것입니다.

SET @r = 0;
SELECT * FROM (SELECT *, (@r := @r + 1) AS r_id FROM my_table) AS tmp
    ORDER BY r_id DESC LIMIT 1;
SELECT * FROM table ORDER BY Id DESC LIMIT 1

순서를 거꾸로 하면 마지막이 첫 번째가 됩니다.

테이블에 자동 증분 값이 없거나 주문할 수 있는 적절한 요소가 없는 경우 다음과 같은 컬렉션에서 항목의 임의 순서를 가져올 수 있습니다.

SELECT
    [item]
FROM (
    SELECT
        *
        , ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY GETDATE()) 'RN'
    FROM [TABLE]
) RDR 
WHERE [RN] = (
    SELECT
        MAX([RN])
    FROM (
        SELECT
            *
            , ROW_NUMBER() OVER(PARTITION BY 1 ORDER BY GETDATE()) 'RN'
        FROM [TABLE]
    ) RDR 
)

중요한 경고는 데이터 집합이 클수록 성능이 저하된다는 것입니다.

Oracle에서는 다음을 수행할 수 있습니다.

SELECT *
FROM (SELECT EMP.*,ROWNUM FROM EMP ORDER BY ROWNUM DESC)
WHERE ROWNUM=1;

이것이 가능한 방법 중 하나입니다.

select ADU.itemid, ADU.startdate, internalcostprice 
from ADUITEMINTERNALCOSTPRICE ADU

right join

   (select max(STARTDATE) as Max_date, itemid 
   from ADUITEMINTERNALCOSTPRICE
   group by itemid) as A

on A.ITEMID = ADU.ITEMID
and startdate= Max_date

이제 어느 정도 된 것 같다.

declare @x int;
select @x = max(id) from table_name;
select * from where id = @x;
$sql="SELECT tot_visit FROM visitors WHERE date = DATE(NOW()) - 1 into @s                
$conn->query($sql);
$sql = "INSERT INTO visitors (nbvisit_day,date,tot_visit) VALUES (1,CURRENT_DATE,@s+1)";
$conn->query($sql);

다음과 같은 작업을 수행할 수도 있습니다.

SELECT LAST (column_name) AS LAST_CUSTOMER FROM table_name;

내가 리카르도에게 투표했어실제로는 max가 정렬보다 훨씬 효율적입니다.차이점을 확인하세요.훌륭합니다.

마지막 행/업데이트 레코드(타임 스탬프)를 가져와야 했습니다.

`sqlite> select timeStamp from mypadatav2 order by timeStamp desc limit 1;
 2020-03-11 23:55:00
 Run Time: real 1.806 user 1.689242 sys 0.117062`

`sqlite> select max(timeStamp) from mypadatav2;
 2020-03-11 23:55:00
 Run Time: real 0.553 user 0.412618 sys 0.134340`

언급URL : https://stackoverflow.com/questions/5191503/how-to-select-the-last-record-of-a-table-in-sql

반응형