2012-07-30 42 views
0

我有2个表1. paypal_ipn_orders表2查找。查找表我有我的所有项目与列名称项目列表我也有另一列标签sort_id这是一个8位数字号码内部用于我的所有项目。表1 paypal_ipn_orders接收订单并有几列,但只有少数对这个问题很重要。 id,payer_email,item_name,sort_num和payment_status。我需要做的是,当订单进入paypal_ipn_orders表时,我需要交叉引用查找表,并在项目名称匹配时将8位数字分配到标记为sort_num的列中。选择2个表复制记录匹配时的唯一编号

table: paypal_ipn_orders 
id  payer_email   item_name  sort_num    payment_status 
1  [email protected]  batman card  NULL     completed 
2  [email protected]  superman card NULL     completed 
3  [email protected]  spiderman card NULL     completed 
4  [email protected]  captain america NULL     completed 

这里是样本查找表

table: lookup 
item     sort_id 
batman card   12345678 
superman card   12345677 
spiderman card   12345676 
captain america  12345675 

我想要输出的样子后,我运行查询。

table: paypal_ipn_orders 
id  payer_email   item_name  sort_num    payment_status 
1  [email protected]  batman card  12345678    completed 
2  [email protected]  superman card 12345677    completed 
3  [email protected]  spiderman card 12345676    completed 
4  [email protected]  captain america 12345675    completed 

我知道这个心不是完全正确的语法,但你会得到的想法

SELECT lookup.sort_id 
INSERT INTO paypal_ipn_orders.sort_num 
WHERE lookup.item = paypal_ipn_orders.item_name 

回答

1

您需要使用UPDATE,不INSERT

UPDATE paypal_ipn_orders 
SET sort_num = (SELECT sort_num 
       FROM lookup 
       WHERE lookup.item = paypal_ipn_orders.item_name) 

两个边笔记,但:

  1. 这样做会更新整个表格。插入时触发器最好做到这一点。

  2. 如果sort_num将始终取决于您的lookup表中的值,我不知道将sort_num存储两次的好处。如果您尝试在插入时保存该值,或者可以手动更改它,那么这是有道理的。 (也就是说,如果你更改lookupsort_num,但你要保持原来的值paypal_ipn_orders。)

+0

在查找表中的排序ID也时有变化的时候,订单只得到一旦印刷就拉掉,然后掉下来,这就是为什么我选择走这条路。我很感激我会尝试。 – user1542036 2012-07-30 04:12:09