如何用sql语句遍历一个用户表,然后在数据表为每个用户添加一条新记录

用户表:USERID,USERNAME。。。。
数据表:USERID,JOB、adddate。。。。
想实现每天凌晨SQLSERVER自动遍历用户表,为每个用户在数据表里插入一行记录,USERID为用户ID,adddate为当天,其它字段为空,如何实现?

sql语句遍历一个用户表 涉及到循环操作 ,添加纪录就是简单的insert操作
不同的数据库的稍有不同。
还要处理数据库表主键的不同设置情况。
循环操作+添加操作的案例:(oracle)
1:主键采用自加方式实现
delete from whilestu1;
commit;

DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP
--获取最大的stuid
select max(stuid) + 1 into maxstuid from whilestu1;
--dbms_output.put_line(maxstuid);
if maxstuid is null then
maxstuid := 1;
--dbms_output.put_line('r');
end if;

age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
--插入数据
insert into whilestu1
(stuid, stuName, age)
values
(maxstuid, '学员' || cast(maxstuid as varchar2(50)), age);
commit;

num1 := num1 + 1;
END LOOP;

end;
/
2:使用触发器声称主键的方式

CREATE OR REPLACE TRIGGER trg_whilestu2
BEFORE INSERT OR UPDATE OF stuid
ON whilestu2
FOR EACH ROW
BEGIN
IF INSERTING THEN
SELECT SEQ_whilestu2.NEXTVAL INTO :NEW.stuid FROM DUAL;
ELSE
RAISE_APPLICATION_ERROR(-20020, '不允许更新ID值!');
END IF;
END;
/

delete from whilestu2;

select * from whilestu2;

commit;
--select SEQ_whilestu2.Nextval from dual;

DECLARE
num1 number;
maxstuid number;
age number;
begin
num1 := 1;
WHILE num1 <= 100 LOOP

age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);
select SEQ_whilestu2.Currval + 1 into maxstuid from dual;

--插入数据
insert into whilestu2
(stuName, age)
values
('学员' || cast(maxstuid as varchar2(50)), age);
commit;

num1 := num1 + 1;
END LOOP;

end;
/
3:使用GUID生成主键的方式

select sys_guid() from dual;

DECLARE
num1 number;
--maxstuid number;
age number;
stuid raw(16);
begin
num1 := 1;
WHILE num1 <= 100 LOOP

age := ROUND(DBMS_RANDOM.VALUE(18, 40), 0);

select sys_guid() into stuid from dual;
--插入数据
insert into whilestu3
(stuid, stuName, age)
values
(stuid, '学员' || cast(num1 as varchar2(50)), age);
commit;

num1 := num1 + 1;
END LOOP;

end;
/
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-06
1、写个存储过程,用游标,循环读数据,执行insert语句。
2、不用游标,直接insert datatable (userid,adddate) select userid,getdate() from usertable

不明白你这么干是为什么,呵呵。
第2个回答  2010-04-06
insert into 数据表(userid, adddate) select userid, getdate() from 用户表

SQL代理->作业->新建作业
添加作业步骤,脚本类型:T-SQL命令, 填写上面的语句
添加执行计划,每天凌晨XX点执行。
第3个回答  2010-04-06
问题叙述不清楚:
1、SQL Server 2000数据库,还是Access数据库?
2、数据库名,例如:ABC.mdb
3、数据库包含数据表,每个数据表中有多个字段,数据表名和字段名?
4、历遍用户表是指全部数据表?
5、每个用户是否是一个特定存储用户资料的?那么插入记录插入到那里?本回答被网友采纳
第4个回答  2010-04-06
insert into 数据表(userid,adddate) values((select userid from
用户表),date);

如何用sql语句遍历一个用户表,然后在数据表为每个用户添加一条新...
1:主键采用自加方式实现 delete from whilestu1;commit;DECLARE num1 number;maxstuid number;age number;begin num1 := 1;WHILE num1 <= 100 LOOP --获取最大的stuid select max(stuid) + 1 into maxstuid from whilestu1;--dbms_output.put_line(maxstuid);if maxstuid is null t...

sql 遍历一张表更新另外一张表
我理解你的题意是将T0中的price要更新为T1中具有相同userid的price总和,且T0的userid等于T1的userid update T0 SET [Price]=A.SUM_P FROM (SELECT [userID],Sum([Price]) AS SUM_P FROM T1 GROUP BY [userID]) A WHERE T0.[userid]=A.[userid]...

SQL中如何遍历表并更新某个字段的值
From Table_A A Inner Join Table_B B On A.xxx = B.xxx 说明如下 这是一个模式 on 后面的a.xxx 是Table_A的某个键 ,B.xxx 是Table_B的某个键。 A.xxx = B.xxx 这两个键的关系是主键与外键的关系,并且这两个键是1对1的关系!

如何用SQL遍历整张表
22 SET ROWCOUNT 1 23 SELECT @empid= empid, @firstname= firstname,@lastname= lastname FROM dbo.#tempemployees;

在SQL中统计一个字段 然后再更新到另一张表的一个字段
先用set 给变量赋值 然后再把变量update到表中 DECLARE @n int set @n=(select count(*) from 表 where 条件)UPDATE 表 SET 列 = @n WHERE 条件 其他的自己填进去吧

如何用SQL语句批量查询某一时刻的用户数据?
select*,max(create_time)froma wherecreate_time<="2017-03-2919:30:36"groupbyuser_id 这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。

SQL Server:如何遍历结果集循环插入语句
insert into table(fields) select (fields) from table_source 两个field对应数据字段的顺序必须一致。

用SQL语句在oracle数据库的某张表一次添加多条记录
insert into stuinfo(id,name)select 1,'1'union all select 2,'2'union all select 3,'3'这样把要插入的数据用union 组合起来就可以了!

【Mybatis】功能强大的动态SQL之foreach批量查询、批量插入
批量查询 先回顾SQL中的or与in操作符。在查询特定条件(如id为1、2或3的用户)时,使用or显得冗余,in则更加简洁。Mybatis通过foreach元素将动态传入的数据列表转化为SQL语句中的in条件。在Dao层定义selectByIds方法,映射文件中相应配置使用foreach遍历传入的id列表,实现批量查询。foreach元素解析过程...

求sql怎么一次用insert 添加多条数据
--一条insert只能插入一行数据,除非你有一个相同数据类型的表需要复制表数据批量插入可以使用Insert into Table2(field1,field2,...) select value1,value2,... from Table1--要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

相似回答