我有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