2013-04-29 2 views
0

나는 UID 필드, "연구 중"필드 (0 또는 1) 및 텍스트 필드가있는 테이블이 있습니다. 텍스트 입력란에는 많은 중복 문자가 있습니다.행 그룹의 고유 인스턴스 업데이트

내가 정말 원하는 것은
select "text.original", min(UID) from tblHashtags group by "text.original" order by min(UID); 

그러나 모든에서 "연구"필드를 업데이트하는 한 줄이 : 지금까지 나는 텍스트 필드의 첫 번째 인스턴스를 선택하는 방법을 알아 낸 레코드를 위에서 1로 반환했습니다. 그리고 나서이 선택을 반전하여 다른 모든 레코드를 0으로 업데이트 할 수 있으면 매우 좋을 것입니다. 나는 아마 간단한 것을 놓치고 있지만 불행히도 SQL을 가지고 자주 놀지는 않습니다.

편집 추가 : 이것에 대해 더 많은 노력을 기울 였으니이 작업을 수행하는 데 도움이되었으므로 한 줄짜리는 신경 쓰지 않아도됩니다. 지금까지 할 수있는 최선의 방법은 다음과 같습니다.

update tblHashtags set "instudy"=1 where (select "text.original", min(UID) from tblHashtags group by "text.original" order by min(UID)); 
Error: only a single result allowed for a SELECT that is part of an expression 

도움이 되었습니까?

답변

0

단일 열 결과 집합이 반환 될 text.original 열을 삭제하십시오. IN 절에서 단일 열 결과 집합을 사용할 수 있습니다.

UPDATE tblHashtags SET "instudy" = 1 WHERE UID IN (
    SELECT UID FROM tblHashtags GROUP BY "text.original" ORDER BY min(UID) 
); 
+0

감사합니다. "IN 절에서 단일 열 결과 집합을 사용할 수 있습니다."분명히 멀리 떨어져있는 맛있는 이야기입니다. – verbsintransit