2011-01-12 1 views
0

私はWebサイト(json)からSQLベースにデータを入れています。 これらの行はデータベースにあります。sql - duplicates

ID | PostId | Name | Message 

Idは、自動インクリメントプライマリキーです。 PostIdにも一意の値があります。 名前とメッセージは何も特別なものではありません。

私はスクリプトを実行する/フォームのボタンをクリックすると、プログラムはすべての値をデータベースに保存します(25があるとします)。 次回はボタンを押して25個のレコード(すべて重複している)を追加するなどしています。

すでにPostIdsでチェックできる方法はありますか?データベースに追加する前に存在していますか?

おかげ

答えて

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

この場合、*の代わりに 'null as [empty]'を使用すると、すべての行データをフェッチせずに任意のインデックスを使用できるため、パフォーマンスが向上します。 –

+1

@DavidMårtensson - これが90年代だったら正しいでしょう。オプティマイザは 'EXISTS(SELECT *')を適切に扱う方法を知るためにa * long *前に修正されました。カラム情報を取得する必要がないことはわかっています。 –

3

もう一つの方法は、あなたが好きなら、これはまた、重複行を更新することができmergeステートメントを使用することで、useingよりも簡単ですあなたは多くのオプションを持って

+1

SQL 2008でのみ有効です。 – Andrew

1

if文

簡単なのは、そのことについてあなたのデータベースに尋ねることです。PostId

SELECT count(PostId) FROM Table where PostId = @PostId; 
関連する問題