MySQL에서 일련의 레코드를 한 번에 삭제하려면 어떻게 해야 합니까?
내 테이블에는 6만 개가 넘는 행이 있다.40000 ~ 50000 행을 한 번에 삭제하려면 어떻게 해야 하나요?
를 사용할 수 있습니다.between
기능:
delete from exampleTable where id between 40000 and 50000
또는 다음과 같이 입력합니다.
delete from exampleTable where id >= 40000 and id <= 50000
꽤 간단해?
테이블의 기본 순서를 기반으로 이 작업을 수행하려고 하는데, 테이블 데이터에서 이러한 순서를 지정할 수 있는 천연 키나 다른 방법이 없는 것으로 가정합니다.
예.SELECT * FROM WORDS
반환:
Hi
Hello
Bye
Goodbye
What's up
따라서 2 ~ 4 행을 삭제할 경우 Hello, Bye 및 Goodbye를 삭제하시겠습니까?그렇죠?
테이블 반환 순서가 결정적입니까?즉, 매번 같은 순서로 결과를 얻을 수 있습니까?이상적으로는 테이블에서 Tricker의 답변을 사용할 수 있는 데이터가 들어 있는 열을 식별할 수 있습니다.
그렇지 않으면 행 번호를 사용하여 between 문을 열어야 합니다.저는 mysql 사용자가 아니기 때문에 아래 코드가 분명 더 깨끗할 것입니다.또한 쿼리를 테스트할 mysql 데이터베이스도 없습니다.mysql에서 행 num을 얻는 방법에 대한 참조로 이 투고를 사용하여 sql 문을 작성했습니다.MySQL을 사용하여 테이블에 레코드 인덱스를 포함하는 열을 생성하려면 어떻게 해야 합니까?
제 질문은 테이블에 기본 열쇠가 있다고 가정합니다.그렇지 않은 경우 관련 없는 행을 삭제하지 않을 수 있으며 테이블 설계도 좋습니다.
DELETE FROM YOUR_TABLE
WHERE primarykey =
(SELECT primarykey FROM
(SELECT t.primarykey,
@curRow := @curRow + 1 AS row_number
FROM YOUR_TABLE t
JOIN (SELECT @curRow := 0) r)
WHERE row_number between 40000 and 50000);
기본 키가 없고 행 개수(행 범위)로 삭제할 경우 mysql 내보내기 Import를 통해 삭제할 수 있습니다.사용자 지정 내보내기 수행 - 시작 행 및 개수를 지정합니다.이 경우 두 개의 내보내기가 필요합니다. 하나는 0 ~ 40k 행이고 다른 하나는 50-마지막 행입니다.그런 다음 이 두 파일을 테이블로 가져옵니다.주의: 대용량 파일 Import에 문제가 있는 경우 Big Dump를 권장합니다.http://www.ozerov.de/bigdump/
표: 식료품
id item
----------
1 rice
2 soap
3 rice
4 rice
항목="쌀" 제한 2에서 '삭제'를 선택합니다.
이것은 다른 모든 아이디어보다 쉽다.삭제할 수 있는 레코드가 2개 있습니다.
그리고 답은,
2 rows deleted.
식료품에서 선택 *;
id item
----------
1 rice
2 soap
언급URL : https://stackoverflow.com/questions/7972435/how-to-delete-a-range-of-records-at-once-on-mysql
'programing' 카테고리의 다른 글
MYSQL 범위가 작동하지 않음 (0) | 2022.09.04 |
---|---|
php/SQL이 NULL을 반환합니다. (0) | 2022.09.04 |
JPA 매핑: "QuerySyntaxException: foobar가 매핑되지 않았습니다.." (0) | 2022.09.04 |
cacerts와 keystore의 차이점은 무엇입니까? (0) | 2022.09.04 |
가장 효율적인 Java Collections 라이브러리는 무엇입니까? (0) | 2022.09.04 |