Mysql
 sql >> база данни >  >> RDS >> Mysql

как да сравня два реда и да съхраня приликите на двата реда в друга колона

Направих нещо подобно, третирайки списъци с идентификатори, разделени със запетая, за да емулирам битови маски. Трикът е да направите обединяване с помощта на '%,id,% (където id е ключът в таблица, индексирана от id). За вашия случай присъединявам table_1 към таблица с последователни цели числа и резултатът включва ред за всеки идентификатор във вашата колона product_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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP + MySQL опашка

  2. Как да напиша вътрешна заявка, която връща последното съобщение за даден потребител?

  3. Преминаване към подготвени изявления

  4. Mysql поръчайте артикули до най-новата от 2 дати

  5. Командата CREATE е отказана за потребител, който има GRANT ALL PRIVILEGES