簡體   English   中英

我如何比較兩行並將兩行的相似性存儲在另一列中

[英]how do i compare two rows and store the similarities of the two rows in another column

考慮我有一個名為table_1的表,如下所示

id               name          products_id
1                hi            1,2,3,4,5,6
2                hello         2,3,5,6
3                wow           5,6,9,10,13
4                total         1,2,5,6,9,13

現在,我想比較id = 1和id = 4,並在表中的另一列中僅在products_id中具有兩行相似的值(即id = 1和id = 4)。

所以現在我該如何在MySQL中做到這一點,我希望上述過程針對所有行進行,並且相似性應存儲在第4列(即相似性列)中。

我希望決賽桌看起來像

id                name           products_id        similarity
1                 hi             1,2,3,4,5,6        1,2,5,6
2                 hello          2,3,5,6            2,3,5,6
3                 wow            5,6,9,10,13        5,6,9,13
4                 total          1,2,5,6,9,13       1,2,5,6,9,13

我做過類似的事情,用逗號分隔ID列表來模擬位掩碼。 技巧是使用'%,id,%(其中id是由id索引的表中的鍵)進行聯接。 對於您的情況,我將table_1連接到一個有序列整數的表,結果包含product_id列中每個id的一行。

我對您所請求的每個ID都執行一次此操作,然后將生成的派生表連接起來以查找常見的表。

這是查詢:

SELECT p1.id, p1.name name1,p2.name name2, GROUP_CONCAT(p1.N) similarities
FROM (
SELECT *
 FROM table_1 t1
JOIN sequence8 s8 on CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%') 

WHERE t1.id =1
) p1
JOIN 
(
SELECT *
 FROM table_1 t1
JOIN sequence8 s8 ON CONCAT(',',t1.product_ids,',') LIKE CONCAT('%,',s8.N,',%') 

WHERE t1.id =4
) p2 ON p2.n = p1.n
GROUP BY p1.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM