इसे आजमाएं
SELECT
a_product_id,
COALESCE( b_product_id, 'no_matchs_found' ) AS closest_product_match
FROM (
SELECT
*,
@row_num := IF(@prev_value=A_product_id,@row_num+1,1) AS row_num,
@prev_value := a_product_id
FROM
(SELECT @prev_value := 0) r
JOIN (
SELECT
a.product_id as a_product_id,
b.product_id as b_product_id,
count( distinct b.Attributes ),
count( distinct b2.Attributes ) as total_products
FROM
products a
LEFT JOIN products b ON ( a.Attributes = b.Attributes AND a.product_id <> b.product_id )
LEFT JOIN products b2 ON ( b2.product_id = b.product_id )
/*WHERE */
/* a.product_id = 3 */
GROUP BY
a.product_id,
b.product_id
ORDER BY
1, 3 desc, 4
) t
) t2
WHERE
row_num = 1
उपरोक्त query
closest matches
प्राप्त करता है सभी उत्पादों के लिए, आप product_id
. शामिल कर सकते हैं अंतरतम क्वेरी में, किसी विशेष product_id
. के लिए परिणाम प्राप्त करने के लिए , मैंने LEFT JOIN
. का उपयोग किया है ताकि भले ही कोई product
. हो कोई मेल नहीं है, यह प्रदर्शित होता है
आशा है कि यह मदद करता है