programing

MySQL에서 일련의 레코드를 한 번에 삭제하려면 어떻게 해야 합니까?

goodsources 2022. 9. 4. 20:18
반응형

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

반응형