commonprofit이라는 테이블이 있는데 이름, 날짜, 이익의 세 필드가 있습니다.
select name,max(date) from commonprofit group by name
날짜가 그룹 name
, 가 지금은 명령에 의해 선택된 모든 레코드를 삭제할하여 최대입니다 많은 레코드를 얻을 수있는 명령은, 왜 내가 할 수없는 다음과 같은 :sqlite의 레코드 삭제
drop from commonprofit where date in (select name,max(date) from commonprofit group by name);
delete from commonprofit where date=max(date) group by name;
delete from commonprofit where date in (select name,max(date) from commonprofit group by name);
둘 중 누구도 할 수 없습니다.
원시 데이터는 다음과 같습니다
name date profit
1 2011/12 42359
1 2010/12 32863
1 2009/12 24293
1 2008/12 16436
1 2007/12 15442
2 2011/12 91634
2 2010/12 58410
2 2009/12 50668
2 2008/12 54297
3 2009/12 12352
3 2008/12 12352
3 2007/12 14226
내가 삭제하려는 것은 :
name date profit
1 2011/12 42359
2 2011/12 91634
3 2009/12 12352
내가 얻고 싶은 것은 :
name date profit
1 2010/12 32863
1 2009/12 24293
1 2008/12 16436
1 2007/12 15442
2 2010/12 58410
2 2009/12 50668
2 2008/12 54297
3 2008/12 12352
3 2007/12 14226
내가 어떻게 할 수 있습니까?
은,는 SQLiteManager를 실행할 수 없습니다 : 가능성 SQL 구문 오류 : 이름을 선택합니다 (여기서 날짜 commonprofit에서 삭제, 최대 (날짜로) commonprofit 그룹에서 이름으로); [식의 일부인 SELECT에 대해 하나의 결과 만 허용] 예외 이름 : NS_ERROR_FAILURE 예외 메시지 : 구성 요소가 오류 코드를 반환했습니다 : 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement] –
이 명령 (작동하는 경우)도 삭제됩니다 다른'name' 그룹에 같은'date'를 가진 레코드. –
OOps - "DELETE"보다는 "DROP"를 발견했으나 그의 로직의 나머지 부분은 점검하지 않았습니다 - 편집합니다. –