0

我有 2 个表 1. paypal_ipn_orders 表 2 是查找。查找表我有一个列名为 item 的所有项目的列表我还有另一个标记为 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 
4

1 回答 1

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两次的好处。如果您尝试在插入时保存该值或能够手动更改它,这是有道理的。(也就是说,如果您更改了表中的,但您希望将原始值保留在 中。)sort_numlookupsort_numlookuppaypal_ipn_orders

于 2012-07-30T04:01:06.613 回答