SELECT
MySQL 테이블의 마지막 행은 어떻게 합니까?
INSERT
데이터를 보내고 있는데 이전 행에서 열 값을 검색해야합니다.
있다 auto_increment
테이블이다.
auto_increment
안에 있습니다. 가장 최근에 추가 한 것을 원합니다.
SELECT
MySQL 테이블의 마지막 행은 어떻게 합니까?
INSERT
데이터를 보내고 있는데 이전 행에서 열 값을 검색해야합니다.
있다 auto_increment
테이블이다.
auto_increment
안에 있습니다. 가장 최근에 추가 한 것을 원합니다.
답변:
예, 거기에 auto_increment가 있습니다
테이블 의 모든 행 중 마지막 행 을 원하면 마지막으로 MAX(id)
정답입니다. 거의:
SELECT fields FROM table ORDER BY id DESC LIMIT 1;
id
인덱싱 되지 않은 경우
관계형 데이터베이스의 테이블은 행 집합 일뿐입니다. 그리고 수학의 세트는 순서가없는 모음입니다. 첫 번째 또는 마지막 행이 없습니다. 이전 행이나 다음 행이 없습니다.
정렬되지 않은 행 세트를 먼저 필드별로 정렬 한 다음 정의한 순서대로 결과 세트를 반복 할 수 있습니다.
자동 증분 필드가 있으므로 정렬 필드로 사용한다고 가정합니다. 이 경우 다음을 수행 할 수 있습니다.
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보다 밀리 초가 약간 느립니다.
answered Jun 14 at 9:41
약 1 년 6 개월 일찍 2014입니다 :)
간단하게 사용하십시오. PDO::lastInsertId
거의 모든 데이터베이스 테이블에는 auto_increment 열이 있습니다 (일반적으로 id)
테이블의 모든 행 중 마지막 행을 원하면
SELECT columns FROM table ORDER BY id DESC LIMIT 1;
또는
두 개의 쿼리를 다음과 같은 단일 쿼리로 결합 할 수 있습니다.
SELECT columns FROM table WHERE id=(SELECT MAX(id) FROM table);
여기에 많은 답변이 자동 증분 열이 색인되어 있으면 자동 증분 순서대로 동일하게 표시됩니다.
당신은 그런 분야가 있고이 경우 보조 노트에, 이다 기본 키 사용에 대한 성능 저하가없는 order by
대 select 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
절 에서 하위 쿼리 또는 사용자 변수를 허용하지 않습니다.