来自SubQuery的MySQL更新值

时间:2014-06-11 19:57:19

标签: mysql sql subquery

我正在使用MySQL并运行查询,我认为应该可以使用,但显然我错过了一些东西。

运行时

0记录得到更新:

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

如果我自己运行子查询,我会按预期获得记录ID。如果我将子查询更改为静态值,则会更新2000 plus记录。我对失踪的想法有所了解吗?

2 个答案:

答案 0 :(得分:1)

这里有不同的语法:

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

答案 1 :(得分:1)

我认为你应该使用加入。我可以看到我们不能使用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%';