[英]Return records that match 2 items of a list in MySQL
我有2个表: links
和links_keywords
。 links
具有id
列, links_keywords
具有link_id
列和keyword_id
列。 给定一个links.id
,我想所有links.id
有至少2名匹配的关键字,将指定的links.id
。
例如,要获取仅具有1个匹配关键字的links.id
,我可以执行以下操作:
SELECT links.id
FROM links
INNER JOIN keywords ON keywords.link_id=links.id
LEFT JOIN links links2 on links2.id=keywords.link_id
WHERE links2.id=1
只需加入两个表,按ID分组并应用“至少2个匹配项”条件:
SELECT links.id
FROM links
JOIN keywords ON keywords.link_id = links.id
GROUP BY links.id
HAVING COUNT(*) >= 2;
或者,如果您已经在使用外键约束:
SELECT link_id AS id
FROM keywords
GROUP BY link_id
HAVING COUNT(*) >= 2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.