sql >> Databáze >  >> RDS >> Mysql

sql dotaz k určení nejpodobnějšího zboží podle značek

Tento dotaz vrátí všechny položky, které mají společný maximální počet značek:

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
  )

Viz housle zde .

Nebo tento vrátí všechny položky, dokonce i ty, které nemají žádné společné štítky, seřazené podle počtu štítků ve společném popisu:

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. Odešlete formulář bez opětovného načtení pomocí jQuery AJAX v PHP MySQL

  2. Volání funkce orákula z JPA

  3. Úvod do SQL spojení

  4. Oracle's OUTER JOIN (+) na řetězci - Migrace PostgreSQL