Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择2个表,在记录匹配时复制唯一编号_Mysql_Sql - Fatal编程技术网

Mysql 选择2个表,在记录匹配时复制唯一编号

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

我有两张桌子。paypal_ipn_订单表2为查找。查找表I有一个列名为item的所有项目的列表,我还有另一个列标记为sort_id,这是一个8位数字,在内部用于所有项目。表1 paypal_ipn_orders接收订单,有几个列,但只有几个列对问题很重要。id、付款人电子邮件、项目名称、排序编号和付款状态。我需要做的是,当订单进入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 

您需要使用
更新
,而不是
插入

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确实会不时更改,订单只会在打印后被提取,然后被删除,这就是为什么我选择走这条路线的原因。我很感激,我会试试的。