我有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的列。
table: paypal_ipn_orders
id payer_email item_name sort_num payment_status
1 greg@gmail.com batman card NULL completed
2 steve@gmail.com superman card NULL completed
3 gary@gmail.com spiderman card NULL completed
4 sarah@gmail.com 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 greg@gmail.com batman card 12345678 completed
2 steve@gmail.com superman card 12345677 completed
3 gary@gmail.com spiderman card 12345676 completed
4 sarah@gmail.com captain america 12345675 completed
我知道这不是正确的语法,但你会明白
SELECT lookup.sort_id
INSERT INTO paypal_ipn_orders.sort_num
WHERE lookup.item = paypal_ipn_orders.item_name
答案 0 :(得分:1)
您需要使用UPDATE
,而不是INSERT
:
UPDATE paypal_ipn_orders
SET sort_num = (SELECT sort_num
FROM lookup
WHERE lookup.item = paypal_ipn_orders.item_name)
但有两个旁注:
这样做会更新整个表格。最好在插入时在触发器中执行此操作。
如果sort_num
总是取决于sort_num
表中的值,我想知道存储lookup
两次的好处。如果您尝试在插入时保存值或者能够手动更改它,则有意义。 (也就是说,如果您更改了sort_num
表格中的lookup
,但又希望将原始值保留在paypal_ipn_orders
中。)