Mysql 内部联接更新sql中出错
我有两张桌子。在一个表中我有id,在另一个表中我有userId。这是他们之间唯一的联系 问题是:在一个表中我有用户名,在另一个表中我有他的余额。我想根据用户的用户名获取用户的余额。因为只有一列连接它们,它是ID,所以我需要找到一种方法,如果我只有他的用户名,如何更新用户平衡 以下是我尝试过但不起作用的方法:Mysql 内部联接更新sql中出错,mysql,Mysql,我有两张桌子。在一个表中我有id,在另一个表中我有userId。这是他们之间唯一的联系 问题是:在一个表中我有用户名,在另一个表中我有他的余额。我想根据用户的用户名获取用户的余额。因为只有一列连接它们,它是ID,所以我需要找到一种方法,如果我只有他的用户名,如何更新用户平衡 以下是我尝试过但不起作用的方法: UPDATE t1 SET t1.balance = '999' FROM bitcoin.accountbalance AS t1 INNER JOIN bitcoin.w
UPDATE t1
SET t1.balance = '999'
FROM bitcoin.accountbalance AS t1
INNER JOIN bitcoin.webusers AS t2
ON t1.userId = t2.id
WHERE t2.username = 'simpanz';
编辑:
ERROR IS: Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM bitcoin.accountbalance AS t1 INNER JOIN bitcoin.webusers AS t2 WHERE ' at line 3
我使用MySQL。试试这个
UPDATE bitcoin.accountbalance AS t1
INNER JOIN bitcoin.webusers AS t2
ON t1.userId = t2.id
SET t1.balance = '999'
WHERE t2.username = 'simpanz';
您必须连接表,然后设置所需的内容
这在SQL Server和MySQL中都适用:
UPDATE accountbalance
SET balance = '999'
WHERE EXISTS (SELECT 1
FROM webusers
WHERE webusers.id = accountbalance.userId AND
webusers.username = 'simpanz'
);
如果您使用的是MySQL,请尝试以下方法,并告诉我是否有效:
UPDATE bitcoin.accountbalance t1
INNER JOIN bitcoin.webusers t2
ON t1.userId = t2.id
SET t1.balance = '999'
WHERE t2.username = 'simpanz';
您使用的是MySQL还是SQL Server?很抱歉出错,请立即尝试。这显示此错误:错误代码:1054。“字段列表”中的未知列“t1.balance”@OndrejTokar。不管怎么说,那都得走了。SQL Server不喜欢set语句中的表别名。答案是:UPDATE accountbalance set balance='999999'其中userId=SELECT id FROM webusers其中username='simpanz';因为你是最接近的cn,所以你编辑了你的答案,这样我就可以把它标记为正确的?谢谢你。@OndrejTokar。这个答案应该与答案中的内容相等。现有版本有什么问题?