sql >> データベース >  >> RDS >> Mysql

2つの行を比較し、2つの行の類似性を別の列に保存するにはどうすればよいですか

    ビットマスクをエミュレートするために、IDのコンマ区切りリストを処理するのと同様のことを行いました。トリックは、'%、id、%(idはidでインデックス付けされたテーブルのキー)のようなものを使用して結合を行うことです。あなたの場合、table_1をシーケンスされた整数のテーブルに結合すると、結果にはproduct_id列のすべてのIDの行が含まれます。

    私はあなたが要求しているIDごとにこれを1回行い、結果の派生テーブルを結合して一般的なものを見つけます。

    クエリは次のとおりです:

    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
    



    1. 日付ベースのレコードを15分間隔にグループ化する方法

    2. テーブル'mysql.user'は存在しません:ERROR

    3. Zend_DbクラスによるMySQLインジェクションの回避

    4. MariaDBでのACOS()のしくみ