gpt4 book ai didi

mysql - 在 MySql 中连接后将 SELECT 分配给 UPDATE 命令

转载 作者:行者123 更新时间:2023-11-28 23:47:14 24 4
gpt4 key购买 nike

我想通过连接用户名的 4 个字符和 Employee 表(另一个表)中帐号的最后 5 位数字来填充用户表中的密码

我试过下面的查询,但它返回空。

SET SQL_SAFE_UPDATES=0;
UPDATE user set password = (SELECT (CONCAT(SUBSTRING(user.username,1,4), SUBSTRING(employee.accountnumber,-5))) FROM employee WHERE user.employeename= employee.employeename);
SET SQL_SAFE_UPDATES=1;

当我在编辑器中单独尝试 SELECT 语句时,它返回准确的值。

SELECT (CONCAT(SUBSTRING(user.username,1,4), SUBSTRING(employee.accountnumber,-5))) as pwd
FROM employee ,user WHERE user.employeename= employee.employeename;

xxxx03332
yyyy07674

但在 UPDATE 语句中它不起作用,因为我将密码列设置为“NOT NULL”选项。当我在编辑器中执行时,它显示错误为 错误代码:1048。“密码”列不能为空我试过下面的查询,但同样的错误

UPDATE user password , (SELECT (CONCAT(SUBSTRING(user.username,1,4), SUBSTRING(employee.accountnumber,-5))) FROM employee WHERE user.employeename= employee.employeename);

如果我在 FROM 子句中包含“用户”(表名),它显示错误为错误代码:1093。您不能在 FROM 子句中指定要更新的目标表“用户”所以,我在更新声明中删除了它。

最佳答案

为什么这么复杂?这样做:

UPDATE user u
JOIN employee e ON u.employeename = e.employeename
SET u.password = Concat(Substring(u.username, 1, 4),
Substring(e.accountnumber, -5))
;

关于mysql - 在 MySql 中连接后将 SELECT 分配给 UPDATE 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33412715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com