2012-01-17 3 views

답변

16
delete from some_table where rand() < 0.5; 

에 대한 절반 기록, 시간의 가장 삭제됩니다.

+0

rand()는 필요 이상으로 작은 데이터 세트의 경우 50 %를 제공하지 않습니다. 두 개의 쿼리를 사용하도록 허용 된 경우 첫 번째 행의 개수를 계산 한 다음 삭제 쿼리에 LIMIT를 사용한다고 말하면되지만 단일 쿼리로 수행 할 수있는 방법이있을 것 같습니다. 하지만 LIMIT에는 하위 쿼리를 사용할 수 없습니다. 그래서 테이블의 구조와 관련이 있어야합니다 ...하지만 그 질문에는 주어지지 않습니다 .... hmmmmm SELECT COUNT (*) FROM table; 그런 다음 테이블 LIMIT 행/2에서 DELETE; –

+0

@Greg Hewgill : 완벽한 대답, +1 – zerkms

+0

@Authman Apatira : 2 개의 쿼리와'COUNT (*) '를 사용해도 ** 정확한 ** 반 행을 삭제할 수 없습니다. 예를 들어 총 7 행이있는 경우. – zerkms

관련 문제