Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

sql query untuk menentukan barang yang paling mirip dengan tag

Kueri ini akan mengembalikan semua item yang memiliki jumlah maksimum tag yang sama:

SET @item = 1;

SELECT
  goods_id
FROM
  links
WHERE
  tag_id IN (SELECT tag_id FROM links WHERE [email protected])
  AND [email protected]
GROUP BY
  goods_id
HAVING
  COUNT(*) = (
    SELECT
      COUNT(*)
    FROM
      links
    WHERE
      tag_id IN (SELECT tag_id FROM links WHERE [email protected])
      AND [email protected]
    GROUP BY
      goods_id
    ORDER BY
      COUNT(*) DESC
    LIMIT 1
  )

Silakan lihat biola di sini .

Atau yang ini akan mengembalikan semua item, bahkan yang tidak memiliki tag yang sama, diurutkan berdasarkan jumlah tag yang sama desc:

SELECT
  goods_id
FROM
  links
WHERE
  [email protected]
GROUP BY
  goods_id
ORDER BY
  COUNT(CASE WHEN tag_id IN (SELECT tag_id FROM links WHERE [email protected]) THEN 1 END) DESC;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengecualian di utas utama org.hibernate.MappingException:Entitas tidak dikenal

  2. Mysql Buat Database dengan karakter khusus di namanya

  3. Bagaimana saya bisa menggabungkan pernyataan mysql ini?

  4. Mysql - Prosedur tersimpan OUT variabel mengembalikan null

  5. Bagaimana cara melakukan backup di MySQL?