Mysql 选择2个表,在记录匹配时复制唯一编号
我有两张桌子。paypal_ipn_订单表2为查找。查找表I有一个列名为item的所有项目的列表,我还有另一个列标记为sort_id,这是一个8位数字,在内部用于所有项目。表1 paypal_ipn_orders接收订单,有几个列,但只有几个列对问题很重要。id、付款人电子邮件、项目名称、排序编号和付款状态。我需要做的是,当订单进入paypal_ipn_orders表时,我需要交叉引用查找表,并在项目名称匹配时将8位数字分配到标有sort_num的列中Mysql 选择2个表,在记录匹配时复制唯一编号,mysql,sql,Mysql,Sql,我有两张桌子。paypal_ipn_订单表2为查找。查找表I有一个列名为item的所有项目的列表,我还有另一个列标记为sort_id,这是一个8位数字,在内部用于所有项目。表1 paypal_ipn_orders接收订单,有几个列,但只有几个列对问题很重要。id、付款人电子邮件、项目名称、排序编号和付款状态。我需要做的是,当订单进入paypal_ipn_orders表时,我需要交叉引用查找表,并在项目名称匹配时将8位数字分配到标有sort_num的列中 table: paypal_ipn_ord
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
您需要使用
更新
,而不是插入
:
UPDATE paypal_ipn_orders
SET sort_num = (SELECT sort_num
FROM lookup
WHERE lookup.item = paypal_ipn_orders.item_name)
不过有两个补充说明:
sort\u num
始终取决于查找
表中的值,我想知道将sort\u num
存储两次有什么好处。如果您试图在插入时保存该值,或者能够手动更改它,那么这是有意义的。(也就是说,如果在查找
表中更改排序数
,但希望在paypal_ipn_订单中保留原始值
)查找表中的排序id确实会不时更改,订单只会在打印后被提取,然后被删除,这就是为什么我选择走这条路线的原因。我很感激,我会试试的。