2011-10-28 2 views
0

내 애플 리케이션에 데이터베이스 테이블을 가지고 있는데 상위 10 개의 숫자 값만 저장하고 싶습니다. 열은 id (고유), 이름, 점수입니다.안드로이드에서 SQL 행을 효율적으로 삭제하는 가장 좋은 방법

가장 적합한 방법은 무엇입니까? 수동으로 모든 레코드를 가져 와서 ID로 삭제해야합니까? 또는 SQL 문을 사용할 수 있습니까? 당신이 테이블에 대한 삽입에

감사합니다,

+0

데이터베이스 테이블의 레코드에 따라 다릅니다. 적은 수의 쿼리를 사용하면 행을 삭제합니다. – user370305

+0

10 개의 값만 저장하고 파일을 사용하려면 관계형 데이터베이스가 필요하지 않습니다. –

+0

@ MaurícioLinhares 나는 내가 동의하는지 모르겠다. SQL은 플랫 파일이 제공하지 않는 접근성을 제공합니다. 그리고 sqlite의 오버 헤드가 그것을 사용하지 않는 것이 정당하다고 생각하지 않습니다. sq * lite * –

답변

1

을 내가 SQLite는 약 100 % 확실하지 않다,하지만 MySQL의 이후 버전에서, 이런 식으로 뭔가가가 아닌 모든 선택

DELETE FROM table_name 
WHERE column_name NOT IN (
SELECT column_name 
FROM table_name 
ORDER BY column_name DESC 
LIMIT 10); 

기본적으로 작동 상위 10 개에서 삭제하십시오.

+0

그것이 작동해야하는 것처럼 보이는 우와, 아픈 그것을 밖으로 시험해보십시오! 감사 –

3

그런 다음 당신이 할 수있는 것은 Trigger을 배치됩니다. 기본적으로 트리거는 테이블에 10 개 이상의 행이 있는지 확인하고 가장 작은 행을 삭제합니다. 트리거는 다음과 같이 보일 것이다 :

CREATE TRIGGER clamp_trigger AFTER INSERT ON table_name 
BEGIN 
    DELETE FROM table_name 
    WHERE column_name NOT IN (
    SELECT column_name 
    FROM table_name 
    ORDER BY column_name DESC 
    LIMIT 10); 
END; 
+0

고마워,하지만 데이터베이스에 저장되는 값은 10 개 뿐이고, 상위 10 개만 필요하며 사용자의 휴대 전화에서 너무 커지는 내 앱의 크기를 원하지 않는다. –

+0

내 수정보기 이 문제를 해결하기위한 답. –

+0

내가 테이블에 넣을 때 말하는거야? 어떻게 될지 아는 어떤 생각? 나는 그 모범을 따르는 데 어려움을 겪고있다. 고마워요 비록 –

관련 문제