我已经查看了 使用连接的 SQL 更新查询 ..但这并不是我所需要的(我习惯于编写 SQL,并且不知道如何修改答案)。
我有一个表“a”和一个表“b”。当且仅当“b”具有字段 f1、f2、f3 等于表“a”中的 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);