我想通过连接用户名中的 4 个字符和员工表(另一个表)中帐号的最后 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 语句中删除了它。