如何为400记录运行SQL更新?

如何为400记录运行SQL更新?,sql,Sql,我必须将400名教员的用户名更改为faculty00x和password00x。所以x是从1到400。例如,第一教员将“faculty001”作为用户名,“password001”作为密码,依此类推 所以我可以在SQL中使用和更新命令,并逐个进行更改 UPDATE users SET loginname = 'faculty001', password = 'password001' WHERE facultyid = '78388' AND databaseid = 'name of da

我必须将400名教员的用户名更改为faculty00x和password00x。所以x是从1到400。例如,第一教员将“faculty001”作为用户名,“password001”作为密码,依此类推

所以我可以在SQL中使用和更新命令,并逐个进行更改

UPDATE users 
SET loginname = 'faculty001', password = 'password001' 
WHERE facultyid = '78388' AND databaseid = 'name of database' ;
但这需要永远。那么,有没有办法一次完成所有的工作,这样我就不必一个接一个地去做呢

顺便说一句,这就是我如何从数据库中获得所有400名教员的id

SELECT "oid", "facultyid" 
FROM "public"."users" 
WHERE "databaseid" = 'name of database' 
LIMIT 400;

考虑到您只是试图将
facultyid
列值001002,…,400与
loginname
列合并;您可能可以使用
加入
并进行类似的更新

update public.users u
join public.users u1 on u.loginname = u1.loginname
and u.facultyid = u1.facultyid
set u.loginname = u.loginname + u.facultyid,
u.password = u.password + u.facultyid;
同样,不确定为什么要将密码存储为纯文本,这是不建议的


注意:猜测您使用的是
MySQL

您是否将
密码
存储为
varchar
?由于DML尚未标准化,请指定您使用的SQL实现。您是否将密码绑定到登录名?@PM77-1:DML语句已在SQL标准中标准化。但大多数数据库管理系统在某种程度上扩展了该标准。但是我同意:我们需要了解数据库管理系统。问题中的语法不是Oracle-Oracle中没有
限制。看起来更像Postgres@a_horse_with_no_name啊!!!绝对地没有注意到
限制
,但是注意到了使用
进行转义,所以有这样一句话。
用于引用标识符对Oracle来说并不是什么特别的事情-这是SQL标准中对它的定义。@a_horse_没有名字,AFAIK,只有Oracle/Postgres使用
进行转义,就像
[
用于MSSQL和backtique for MySQL。好吧,
是SQL标准定义的,并且所有(?)DBMS都支持它(至少DB2、Firebird、SAP Hana、HSQL、H2、Derby、Ingres、Informix、Greenplum、Teradata,可能还有更多)。默认情况下,MySQL和SQL Server选择忽略该标准——但两者都可以(而且应该是IMHO)配置为也接受标准报价样式。