我有2个表,item_key
表和paypal_ipn_orders
表。在item_key中,我存储商品名称和一个* sort_id *,它是我用来对商品进行排序的8位数字,在paypal_ipn_orders表中我有一个商品名称以及一个* sort_id *。当2个表中的记录匹配时,mysql选择相似的值
会发生什么
- 订单进入> paypal_ipn_orders与项目名称
- 查询的item_key表在表
- 一个匹配的项目名称检查如果存在匹配它分配执行其8位数值(item_key.SORT_ID)paypal_ipn_orders.SORT_ID
我知道如何交叉引用表找到匹配的记录,当他们是相同的但是没有•如果不是大多数项目标题都有轻微的差异,即多余的空格,数字4而不是1,或多余的字符。
Query
UPDATE paypal_ipn_orders
SET sort_num = (SELECT sort_id
FROM itemkey
WHERE itemkey.item = paypal_ipn_orders.item_name)
WHERE LOWER(payment_status) = 'completed'
结果
table: paypal_ipn_orders
ITEM SORT_ID
4 Icy Manipulator ~ Ice Age NULL
4 Worldslayer - Mirrodin MtG Magic NULL
1 Karn Liberated - New Phyrexia MtG NULL
4 Blightning ~ Shards 12334234(identical title= a non-null SORT_ID)
table: item_key
ITEM SORT_ID
1 Icy Manipulator + Ice Age 12334231(doesnt exactly match)
4 Worldslayer - Mirrodin Magic 12334332(doesnt exactly match)
4 Karn Liberated - Phyrexia MtG 12334333(doesnt exactly match)
4 Blightning ~ Shards 12334234(perfect match)
所需的结果
table: paypal_ipn_orders
ITEM SORT_ID
4 Icy Manipulator ~ Ice Age 12334231(similar title = match assign value)
4 Worldslayer - Mirrodin MtG Magic 12334232(similar title = match assign value)
1 Karn Liberated - New Phyrexia MtG 12334233(similar title = match assign value)
4 Blightning ~ Shards 12334234(exact title = match assign value)
这是我的想法,但不是在我的工具箱中。 – 2012-08-06 07:20:37
我明白levenshtein距离背后的原理,然而这是否是一个变形函数?如果A与B相似,那么B的最小编辑数等于A? – user1542036 2012-08-06 07:47:31
我认为你可以使用它像 其中levenshtein_ratio(itemkey.item,paypal_ipn_orders.item_name)> 75(匹配大于75%) – 2012-08-06 07:51:04