마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SQL문 하나만 짜주실 고수분 도와주세요.

0 추천

 

지금 원하는 SQL문이

 

중복된 값중 일정 속성이 가장 높은 것만 남겨두려하는대요...나머지 제거

 

위 표에서 SQL문을 통해 중복된 id,pass,name에서 exp가 가장큰것만 빼고 나머지 제거하려고 합니다.

ex) _id에서 id,pass,name이 중복된 1,2,3,4 / 5,6 / 7 에서 SQL문으로 exp가 가장 높은값 빼고 지워서

_id 2,5,7만 남기려고합니다.

 

도와주세요 ㅠㅠ

 

 

=====================================================================

DELETE FROM table WHERE _id IN (
SELECT * FROM (
SELECT _id FROM table
GROUP BY id, PASSWORD , name
HAVING ( count( * ) >1 ) ) AS id )
 
이렇게 하니  순서없이 중복된 값이 지워져버려서 곤란하네요 ㅠㅠ
 

 

 

 

익명사용자 님이 2013년 12월 23일 질문

4개의 답변

0 추천

아래와 같은 방법으로 하면 안되려나요?

DELETE FROM table WHERE id, pass,name,exp not in (

select id, password, name, max(exp) from table

group by id, password, name )

요즘예능 (140 포인트) 님이 2013년 12월 23일 답변
알려주신대로 해봤지만 안되네요 ㅠㅠ
0 추천
DELETE FROM
  테이블
WHERE
 _id IN (
SELECT
_id
FROM
(SELECT
_id, max(exp) m_exp
FROM
테이블
GROUP BY id)
);
id, password, name이 항상 일치하다는 전제하에 작성되었습니다.
dev_아마 (9,750 포인트) 님이 2013년 12월 24일 답변
dev_아마님이 2013년 12월 24일 수정
0 추천
중복된 row 중에서 exp 값이 가장 높은 row만 나두고 나머지 row는 삭제하는 예를 만들었습니다.

 

name 칼럼이 정렬되어 있다는 전제하에 제대로 동작합니다.

 

중복되는 데이터 중에서 exp의 최대값을 찾고 반복문을 사용하여 삭제했습니다.

 

SQL 문장 하나로 동작하지는 않지만 대안이 될 수 있을 겁니다.

 

참고하세요 ^^

 

http://blog.naver.com/goodsogi/40203267802
방귀과장 (18,940 포인트) 님이 2013년 12월 24일 답변
–4 추천
fdasfdasfdsafdasfdsafdsafas
익명사용자 님이 2013년 12월 23일 답변 1 신고
...