2014-01-07 42 views
0

我有两个变量 1. inserted_user_id, 2.在我的MySQL程序inserted_address_id如何在select中使用过程变量并在MySQL中插入查询?

我需要在插入查询和选择查询中使用它们。我试着像

插入user_new(姓名,公司,电子邮件,CUSTOMER_ID)选择名称, 公司,电子邮件,从user_old inserted_user_id;

insert into user_address_map(address_id,user_id)select inserted_user_id,inserted_address_id;

有两种说法不起作用。如何在上面的sql语句中使用过程变量的值?

回答

1

首先做出选择让所有的信息:(需要先声明这些变量)

SELECT name, 
     company, 
     email, 
INTO varname, varcompany, varemail 
FROM user_old 

然后用它进入插入

INSERT INTO user_new 
      (name, 
      company, 
      email, 
      customer_id) 
VALUES  (varname, 
      varcompany, 
      varemail, 
      inserted_user_id); 

编辑: 首先插入选定的值并获取插入的行的ID

INSERT INTO user_new 
      (name, 
      company, 
      email) 
SELECT name, 
     company, 
     email 
FROM user_old 

SET out_param = last_insert_id(); 

然后用你的参数更新这一行

UPDATE user_new 
SET customer_id = inserted_user_id 
WHERE id = out_param; 
+0

其实我在select语句中有很大的列表。存储过程包含许多这样的表。如果我为每列创建变量,它将变成超过1000个变量。这将很难处理。有没有其他的方法呢? – suren

+0

这种情况下,尝试将它全部合并:'insert into user_new选择名称作为名称,公司作为公司,作为电子邮件的电子邮件,从user_old作为customer_id的inserted_user_id;''或类似的东西,在这里找到[link](http:// www .dbforums.com/microsoft-access/422460-sql-insert-into-values-select.html) – Melon

+0

如果我在select语句中使用inserted_user_id,它会编译但在运行时失败。 – suren

相关问题