programing tip

MySQL에서 마지막 행을 선택하십시오.

itbloger 2020. 6. 5. 20:21
반응형

MySQL에서 마지막 행을 선택하십시오.


SELECTMySQL 테이블의 마지막 행은 어떻게 합니까?

INSERT데이터를 보내고 있는데 이전 행에서 열 값을 검색해야합니다.

있다 auto_increment테이블이다.


예, 거기에 auto_increment가 있습니다

테이블 모든 행마지막 을 원하면 마지막으로 MAX(id)정답입니다. 거의:

SELECT fields FROM table ORDER BY id DESC LIMIT 1;

관계형 데이터베이스의 테이블은 행 집합 일뿐입니다. 그리고 수학의 세트는 순서가없는 모음입니다. 첫 번째 또는 마지막 행이 없습니다. 이전 행이나 다음 행이 없습니다.

정렬되지 않은 행 집합을 일부 필드를 기준으로 정렬 한 다음 정의한 순서대로 결과 집합을 반복 할 수 있습니다.

자동 증분 필드가 있으므로 정렬 필드로 사용한다고 가정합니다. 이 경우 다음을 수행 할 수 있습니다.

SELECT    *
FROM      your_table
ORDER BY  your_auto_increment_field DESC
LIMIT     1;

우선 정렬되지 않은 행 집합을 your_auto_increment_field(또는 호출 한 항목별로) 내림차순으로 정렬하는 방법을 확인하십시오. 그런 다음을 사용하여 결과 집합을 첫 번째 행으로 제한합니다 LIMIT 1.


많은 행이있는 테이블에서 두 개의 쿼리가 더 빠를 것입니다 ...

SELECT @last_id := MAX(id) FROM table;

SELECT * FROM table WHERE id = @last_id;

@spacepille이 제안한 두 개의 쿼리를 다음과 같은 단일 쿼리로 결합 할 수 있습니다.

SELECT * FROM `table_name` WHERE id=(SELECT MAX(id) FROM `table_name`);

빠른 속도로 작동하지만 INNODB 테이블에서는 ORDER + LIMIT보다 밀리 초가 약간 느립니다.


간단하게 사용하십시오. PDO::lastInsertId

http://php.net/manual/en/pdo.lastinsertid.php


가장 최근에 추가 된 것을 원하면 타임 스탬프를 추가하고 가장 높은 타임 스탬프 (1)를 기준으로 역순으로 순서를 선택하십시오. ID별로 이동하려면 ID별로 정렬하십시오. JUST가 추가 한 것을 사용하려면을 사용하십시오 mysql_insert_id.


SELECT * FROM adds where id=(select max(id) from adds);

이 쿼리는 테이블의 마지막 레코드를 가져 오는 데 사용되었습니다.


명령 OFFSET에서 를 사용할 수 있습니다 LIMIT.

SELECT * FROM aTable LIMIT 1 OFFSET 99

테이블에 100 개의 행이있는 경우 primary_key에 의존하지 않고 마지막 행을 반환합니다


여기에 많은 답변이 자동 증분 열이 색인되어 있으면 자동 증분 순서대로 동일하게 표시됩니다.

당신은 그런 분야가 있고이 경우 보조 노트에, 이다 기본 키 사용에 대한 성능 저하가없는 order byselect max(id). 기본 키는 데이터는 (적어도 InnoDB에 대한) 데이터베이스 파일에 정렬되는 방식이며, RDBMS 어디 데이터의 끝을 알고,하고 최적화 할 수있는 order by id + limit 1범위는 AS 동일하게max(id)

이제 자동 증가 된 기본 키가없는 경우 이동량이 적은 도로입니다. 기본 키는 3 개의 필드로 구성된 자연 키일 수 있습니다. 그러나 모든 것이 손실되는 것은 아닙니다. 프로그래밍 언어에서 먼저 행 수를 얻을 수 있습니다.

SELECT Count(*) - 1 AS rowcount FROM <yourTable>;

그런 다음 LIMIT에서 얻은 숫자를 사용하십시오.

SELECT * FROM orderbook2
LIMIT <number_from_rowcount>, 1

불행히도 MySQL은 LIMIT에서 하위 쿼리 또는 사용자 변수를 허용하지 않습니다.


거의 모든 데이터베이스 테이블에는 auto_increment 열이 있습니다 (일반적으로 id)

테이블의 모든 행 중 마지막 행을 원하면

SELECT columns FROM table ORDER BY id DESC LIMIT 1;

또는

두 개의 쿼리를 다음과 같은 단일 쿼리로 결합 할 수 있습니다.

SELECT columns FROM table WHERE id=(SELECT MAX(id) FROM table);

참고 URL : https://stackoverflow.com/questions/4073923/select-last-row-in-mysql

반응형