我正在使用MySQL并运行查询,我认为应该可以使用,但显然我错过了一些东西。
运行时0记录得到更新:
UPDATE `client`
SET StatementTermsID = (SELECT StatementTermsID FROM statementterms WHERE TermsDescription = 'NET 15')
WHERE `client`.StatementNote LIKE '%Net 15%';
如果我自己运行子查询,我会按预期获得记录ID。如果我将子查询更改为静态值,则会更新2000 plus记录。我对失踪的想法有所了解吗?
答案 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%';