繁体   English   中英

来自子查询的MySQL更新值

[英]MySQL Update Value from SubQuery

我正在使用MySQL并正在运行查询,我认为该查询应该有效,但显然我缺少了一些东西。

运行时0条记录被更新:

UPDATE `client` 
  SET StatementTermsID = (SELECT StatementTermsID FROM statementterms WHERE TermsDescription = 'NET 15') 
  WHERE `client`.StatementNote LIKE '%Net 15%';

如果我自己运行子查询,则会得到预期的记录ID。 如果我将子查询更改为静态值,则将更新2000条记录。 对我缺少的东西有任何想法吗?

这是另一种语法:

UPDATE `client` a,
(SELECT StatementTermsID FROM statementterms WHERE TermsDescription = 'NET 15') b
SET a.StatementTermsID = b.StatementTermsID
WHERE a.StatementNote LIKE '%Net 15%';

我认为您应该使用联接。 我可以看到我们不能使用StatementTermsID,因为那是您要更新的内容,因此可以肯定的是,它不会在前一个表中出现。 如果您有任何ID要加入,也要使用它。

UPDATE client
SET StatementTermsID =statementterms.StatementTermsID 
FROM client
INNER JOIN statementterms 
   WHERE statementterms.TermsDescription = 'NET 15' AND 
   client.StatementNote LIKE '%Net 15%';

否则尝试这种语法

UPDATE client , statementterms 
   SET client.StatementTermsID = statementterms .StatementTermsID 
 WHERE statementterms.TermsDescription = 'NET 15' AND 
       client.StatementNote LIKE '%Net 15%';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM