이 문서에서는 데이터베이스 테이블 내에서 누락된 순차 ID를 찾아내는 SQL 쿼리를 보여줍니다. 이 접근 방식은 DISTINCT
키워드를 활용하여 중복 항목을 제거하고 1
연산자를 사용하여 일련의 잠재적 ID를 생성합니다. 이 생성된 시퀀스를 테이블의 기존 ID와 비교하여 간격을 효율적으로 식별합니다. 이 방법은 초기 ID를 1로 가정하고 현재 최대 ID까지 검색합니다.
핵심 쿼리:
SELECT DISTINCT id + 1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable);
이 쿼리는 설명된 문제를 효과적으로 해결하지만 제한 사항이 있습니다. 현재 최대 ID를 초과하여 생성되었다가 삭제된 누락된 ID는 감지하지 않습니다.
이러한 한계를 극복하기 위해 검색 상한선을 정의하는 MaxID
매개변수를 도입했습니다. WHERE
절에 대한 이러한 수정을 통해 현재 최대값 및 MaxID
범위 내에서 누락된 ID를 감지할 수 있습니다.
SELECT DISTINCT id + 1 FROM mytable WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable) AND id + 1 <= MaxID;
이 향상된 쿼리는 현재 최대값까지 누락된 ID를 찾을 뿐만 아니라 더 높은 범위에서 삭제되었을 수 있는 커버 ID까지 검색을 확장합니다.
제공된 쿼리는 MySQL 및 SQLite 데이터베이스에서 올바르게 작동하는 것으로 확인되었습니다. SQL Server와 같은 다른 데이터베이스 시스템과의 호환성을 위해 약간의 구문 조정이 필요할 수 있습니다.
위 내용은 데이터베이스 테이블에서 누락된 ID를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!