[mysql] 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.


답변

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

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

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


답변

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

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

SELECT * FROM table WHERE id = @last_id;


답변

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

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


답변

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


답변

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

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

SELECT columns FROM table ORDER BY id DESC LIMIT 1;

또는

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

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