4

私は2つのテーブルを持っています。1 つは単純な文字列/ID ルックアップです。

構造テーブル:

str_key 文字列
0 'a'
1 'b'

文字列が一意である場所。もう 1 つはより複雑で、共有の string_id が含まれます。

値テーブル:

str_key other_key val
0 0 1.234
0 1 1.567
1 0 1.890

ここで、StrTable を介して str_key を取得するために検索する文字列を使用して、ValTable を更新したいと考えています。簡単な更新は次のようになります。

UPDATE ValTable SET val = 2.124 WHERE str_key = 0 AND other_key = 1 LIMIT 1
IF @@ROWCOUNT=0 INSERT INTO ValTable VALUES (0,1,2.124);

では、文字列「a」で str_key を検索するようにこれを変更するにはどうすればよいでしょうか? 参加が必要だと思いますが、更新で参加したことはありません。または、where 句にさらに追加することはできますか?

4

2 に答える 2

14

必要な構文は次のとおりです。

UPDATE  v
SET     val = 2.124
FROM    ValTable v
        INNER JOIN
                StringTable s
                ON v.str_key = s.str_key
WHERE   s.String = 'a'
AND     v.other_key = 1

IF @@ROWCOUNT = 0
BEGIN

        INSERT
        INTO    ValTable
        SELECT  str_key, 1, 2.124
        FROM    StringTable
        WHERE   String = 'a'

END
于 2009-04-08T11:09:12.483 に答える