如何复制表中的整行并更改一个值?

时间:2013-05-21 15:57:07

标签: sql

insert into user 
    (user_id, account_id, user_type_cd, name, e_mail_addr, login_failure_cnt, admin_user, primary_user)
select * 
from pnet_user 
where account_id='1';

但是现在我想在插入的条目上更改1到2。但是现在我想在插入的条目上更改1到3。但现在我想在插入的条目上将1更改为....但是现在我想在插入的条目上将1更改为1000.

它将复制并写下1000次(仅更改ID)。

你知道吗?抱歉我的英语不好!非常感谢你!

4 个答案:

答案 0 :(得分:1)

这完全取决于你的意思;

如果你想要前1000个用户为什么不写;

WHERE account_id <= 1000

如果您想要所有用户;

没有WHERE条款。

如果您希望通过参数(用户输入)插入用户;

DECLARE @ID int
SET @ID = 1;

WHERE account_id = @ID

答案 1 :(得分:0)

insert into user 
    (user_id, account_id, user_type_cd, name, e_mail_addr, login_failure_cnt, admin_user, primary_user)
select * 
from pnet_user 
where account_id BETWEEN 1 AND 1000;

SELECT - 部分可能会一次返回多行。 (我认为account_id实际上不是字符串而是数字)。 此外,我强烈建议在select语句中输入列名。

答案 2 :(得分:0)

insert into user (user_id,account_id,user_type_cd,name,e_mail_addr,login_failure_cnt,admin_user,primary_user) select * from pnet_user 

您也可以指定列名而不是*

insert into user (user_id,account_id,user_type_cd,name,e_mail_addr,login_failure_cnt,admin_user,primary_user) select id,ac_id .... from pnet_user 

答案 3 :(得分:0)

如果account_id是数字,只需更改where子句

即可
  Insert user (user_id, account_id, user_type_cd, 
       name, e_mail_addr, login_failure_cnt, 
       admin_user, primary_user)
  Select user_id, account_id, user_type_cd, 
       name, e_mail_addr, login_failure_cnt, 
       admin_user, primary_user
  From pnet_user where account_id 
       Between 1 and 1000

如果account_id确实是一个字符串,则将其更改为数字

  Insert user (user_id, account_id, user_type_cd, 
       name, e_mail_addr, login_failure_cnt, 
       admin_user, primary_user)
  Select user_id, account_id, user_type_cd, 
       name, e_mail_addr, login_failure_cnt, 
       admin_user, primary_user
  From pnet_user where Cast(account_id as integer) 
       Between 1 and 1000