如何为400记录运行SQL更新?
我必须将400名教员的用户名更改为faculty00x和password00x。所以x是从1到400。例如,第一教员将“faculty001”作为用户名,“password001”作为密码,依此类推 所以我可以在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
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)配置为也接受标准报价样式。