2017-07-18 10 views
0

私はASCIIの合計に特定の数学的な違いを持つテーブルの行を取り、その行を別のテーブルに追加したり、その違いがあるときに別のフィールドにフラグを立てたりするスクリプトを作成したいと考えています。例えばテーブルの行と他のすべての行を比較するにはどうすればよいですか?

単語Aと単語BのASCII和のASCII和、テーブルの行に保存されているの両方が、63または31

の差があるとき、私は私はおそらく見つけることができていますよループを使用してこれらの行を選択しますが、SQLは私の最大の美徳ではありません。

ItemID | asciiSum |ProperDiff 
-------|----------|---------- 
1  | 100  | 
2  | 37  | 
3  | 69  | 
4  | 23  | 
5  | 6  | 
6  | 38  | 

コードを実行した後、フィールドProperDiff 1及び2(100から37)= 63などのためAsciiSumので、アイテムID 1,2,3,5,6-ために「はい」含むように更新されます。

+6

サンプルデータと予想される結果を投稿してください。 –

+0

1,2,3,5および6の項目は「はい」ですが、diffは31ではなく32でなければなりません。 – martennis

答えて

0

これは、高速ではありませんが、私はそれが何をしたいんだと思う:

update t 
    set ProperDiff = 'yes' 
    where exists (select 1 
        from t t2 
        where abs(t2.AsciiSum - t.AsciiSum) in (63, 31) 
       ); 

それは小さなテーブルの上に大丈夫動作するはずです。

関連する問題