結合を使用して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);