使用select语句使用另一个表中的值更新一个表

时间:2014-11-09 06:31:40

标签: mysql

我想根据表格2更新table1中的一些ClaimNos {。}}。

declarationNos

此查询不会给出任何错误,但它也不起作用。怎么了?

1 个答案:

答案 0 :(得分:0)

首先,我认为您复制了错误的查询。您有WHERE dummy.DeclarationNo,我怀疑您确实拥有WHERE sg_report.DeclarationNo

Paresh J是正确的,你的WHERE语句应该包含IN而不是一个相等的语句,因为它可以返回多行。

但是我怀疑你的问题的答案与数据类型有关。我创建了一个示例数据库并运行以下查询,它工作得很好。我实际上花了一段时间试图调试它,因为它没有更新任何东西,直到我意识到没有更新

UPDATE sg_report
SET    ClaimNo = (
  SELECT  MAX( dummy.ClaimNo ) as ClaimNo 
  FROM dummy
  WHERE ClaimNo REGEXP  '^[0-9]+$' AND sg_report.DeclarationNo = dummy.DeclarationNo
)
WHERE sg_report.DeclarationNo IN (
  SELECT DISTINCT dummy.DeclarationNo
  FROM dummy
  WHERE dummy.DeclarationNo LIKE '2%'
)