2011-01-12 3 views
0

웹 사이트 (json)에서 SQL 기반으로 데이터를 가져오고 있습니다. db에이 행이 있습니다.sql - duplicates

ID | PostId | Name | Message 

이드는 자동 증가 기본 키입니다. PostId에도 고유 한 값이 있습니다. 이름과 메시지는 특별한 것이 아닙니다.

스크립트를 실행하거나/... 버튼을 클릭하면 프로그램이 모든 값을 데이터베이스에 저장합니다 (25 개라고 가정). 다음 번에 버튼을 누르면 25 개의 레코드 (모두 중복)가 추가됩니다.

이미 값이 'PostIds'를 통해 확인할 수있는 방법이 있습니까? db에 추가하기 전에 존재합니까?

감사

답변

2
if not exists(select * from table where PostId [email protected]) 
Begin 
//add 
End 
+4

이 경우에 * 대신에'null as [empty]'를 사용하면 행 데이터를 가져 오지 않고 어떤 인덱스라도 사용할 수 있기 때문에 성능면에서 훨씬 더 낫다는 것을 읽었습니다. –

+1

@David Mårtensson - 이것이 90 년대라면 올바른 것입니다. 옵티마이 저는'EXISTS (SELECT *')를 제대로 다루는 방법을 알기 위해 a * long * time을 고쳤습니다. 열 정보를 검색 할 필요가 없다는 것을 알고 있습니다. –

3

또 다른 방법은 만약 당신이 좋아하면,이 또한 중복 행을 업데이트 할 수 있습니다 merge 문을 사용하는 것입니다 useing보다 쉽습니다 인 당신은 많은 옵션이

+1

은 SQL 2008에서만 유효합니다. – Andrew

1

if 문

간단한 것은 당신이 그것에 대해 당신의 데이터베이스에 물어 보는 것입니다. PostId

SELECT count(PostId) FROM Table where PostId = @PostId;