2

結合を使用してSQL更新クエリを見てきましたが、 それは私が必要としているものではありません(私はSQLのクックブックに慣れており、回答を変更する方法を理解できません)。

テーブル「a」とテーブル「b」があります。「b」にテーブル「a」のf1、f2、f3に等しいフィールドf1、f2、f3のレコードがある場合にのみ、「a」のフィールドf1を更新したいと思います。

だから、私が持っている場合

TABLE a
f1            f2            f3         ...
------------------------------------------
m             a1a 1a1       1-1-1980
m             a1a 1a1       1-1-1980
m             b1b 1b1       18-1-1982
m             c1c 1c1       16-4-1975

TABLE b
f1            f2            f3         ...
------------------------------------------
m             b1b 1b1       18-1-1982
m             c1c 1c1       16-4-1975

更新してください。その場合、テーブル「a」は次のようになります。

TABLE a
f1            f2            f3         ...
------------------------------------------
m             a1a 1a1       1-1-1980
m             a1a 1a1       1-1-1980
m             b1b 1b1       *-1-1982
m             c1c 1c1       *-4-1975

私は文字列操作の方法を知っています...しかし、更新クエリは、特にこのコンテキストでは、私が慣れているものではありません。よろしくお願いします。

ありがとうございました!

編集:私はsqliteを使用しています

編集2:これはユーザーが提案したクエリですが、現在レコードを更新するために機能していません(おそらく私の間違いです):

UPDATE diseases
SET dateofbirth='*'||ltrim(dateofbirth,0123456789)
WHERE gender=(SELECT a1.gender FROM diseases AS a1 
              INNER JOIN stage2helper AS b ON     a1.gender = b.gender AND 
a1.dateofbirth = b.dateofbirth AND a1.postalcode = b.postalcode) 

AND postalcode=(SELECT a1.postalcode FROM diseases AS a1 INNER JOIN stage2helper AS b   ON a1.gender = b.gender AND a1.dateofbirth = b.dateofbirth AND a1.postalcode = b.postalcode) 

AND dateofbirth=(SELECT a1.dateofbirth FROM diseases AS a1 INNER JOIN stage2helper AS     b ON a1.gender = b.gender AND a1.dateofbirth = b.dateofbirth AND a1.postalcode =     b.postalcode);
4

1 に答える 1

0

Transact-SQLでは、これを行うことができます

UPDATE a
SET    a.f3=yourfunctiontogeneratetext()
FROM   b
WHERE  a.f1=b.f1 AND a.f2=b.f2 AND a.f3=b.f3

ANSI SQLでは、from構文を使用できないので、試してみてください。

UPDATE a
SET    a.f3=yourfunctiontogeneratetext()
WHERE  a.f1 = (SELECT a1.f1
               FROM a as a1
                    iNNER JOIN
                    b ON  a.f1=b.f1 AND a.f2=b.f2 AND a.f3=b.f3) and
       a.f2 = (SELECT a1.f2
               FROM a as a1
                    iNNER JOIN
                    b ON  a.f1=b.f1 AND a.f2=b.f2 AND a.f3=b.f3) and
       a.f3 = (SELECT a1.f3
               FROM a as a1
                    iNNER JOIN
                    b ON  a.f1=b.f1 AND a.f2=b.f2 AND a.f3=b.f3)

私はこれをタブレットで行ったので、タイプミスは許してください

于 2012-12-03T03:21:17.863 に答える