Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

truy vấn sql để xác định hàng hóa tương tự nhất theo thẻ

Truy vấn này sẽ trả về tất cả các mục có số lượng thẻ chung tối đa:

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
  )

Vui lòng xem fiddle tại đây .

Hoặc cái này sẽ trả về tất cả các mục, ngay cả những mục không có thẻ chung, được sắp xếp theo số thẻ trong mô tả chung:

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. Làm thế nào để mã PDO này bảo vệ khỏi SQL Injjection?

  2. Làm cách nào để đặt AUTO_INCREMENT trong Laravel với Eloquent?

  3. Câu hỏi bảo mật PHP?

  4. SQLSTATE [HY000] [2003] Không thể kết nối với máy chủ MySQL trên lỗi '127.0.0.1' (61) Laravel 4.1

  5. Mysql kết nối trong hai bảng