2011-10-13 1 views
-1

의 두 항목을 삭제할 수 있습니다 내가 원하는 단지 rows3 및 row4을 elimate 테이블 어떻게 다른 형태와 다른 열

rowsid  source_row same_as_row 

row1  1    18  

row2  3     18 

row3  18    1 

row4  18    3 

처럼있다! 쿼리 row3 및 row4의 .help을 삭제합니다

+1

일이 어떻게 데이터가 끝날 않은 데 을 same_as_row, rowsid, source_row에 의해 테이블 ​​ 그룹에서 삭제? 삭제하는 것이 좋은 생각 인 것처럼 보이지만 다시 생성하지 못하게하는 것은 무엇입니까? (어떤 행이 우선 순위를 어떻게 말하는지와 같은 더 많은 정보가 필요합니다.) –

+0

당신이 정말로하고 싶은 것을 보여줄 수 있습니까? 그게 네 식탁이야? –

+0

RDBMS는 무엇을 제공합니까? – gbn

답변

2
DELETE FROM table 
GROUP BY sourcerow 
HAVING COUNT(*) > 1 

그것은 당신 만 sourcerow 열에서 중복 값을 찾고 가정을해야

+0

잘못된 sql, 나는 eleminate widht count (*)> 1을 원한다. eleiminate duplicata betweenn source_row same_as_row – schweinsteiger

+0

@AbdelillahFarka : count (*) same_as_row> 1 삭제 행이 있으면 거기에 설명 된 행이 있습니까? – genesis

+0

아직도 질문이 불분명하기 때문에 downvote하지 않을 것입니다. 그러나이 쿼리는 OP가 삭제하고자하는 행의 예가 맞지 않습니다. – JohnFx

1

편집 : 그럼 나를 날려 (이전 답변을 삭제) 이중 중첩 작품 이후

이 내가 그것을 할 거라고 방법은 (논리적 관점에서 매우 중복의 일부가 된 경우에도)입니다

DELETE 
    yourTable 
FROM 
    yourTable 
INNER JOIN 
    (SELECT * FROM (SELECT same_as_row FROM yourTable GROUP BY same_as_row)) as lookup 
    ON lookup.same_as_row = yourTable.source_row 
WHERE 
    source_row > same_as_row 
+0

하위 쿼리를 사용할 수 있습니다. 파생 된 테이블에 이중으로 중첩하면됩니다. –

+0

@MartinSmith : 편집마다? 그렇다면 왜 작동합니까? 범위와 관련이 있습니까? 또는 가장 깊은 하위 쿼리가 상관 관계가 없기 때문에? – MatBailie

+0

[여기에 설명되어 있습니다] (http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/). 파생 테이블은 암시 적으로 임시 테이블로 구체화됩니다. –

1
select 
    rowsid, source_row, same_as_row 
from tablename t1 
where not exists 
(
    select * from tablename t2 
    where t2.source_row = t1.same_as_row and t2.same_as_row = t1.source_row and t1.rowsid > t2.rowsid) 
) 
+0

당신이 아주 다투는 것 같아요. – schweinsteiger

0

복제하기 COUNT (*)>