admin

MySql:选择具有所有值的项目

sql

我有3列的Mysql表:id,company_id和tag_id。它用于将公司和标签链接在一起。表架构:

CREATE TABLE tbl_company_tag_link (
  id BIGINT NOT NULL AUTO_INCREMENT,
  company_id BIGINT NOT NULL,
  tag_id BIGINT NOT NULL,
  PRIMARY KEY(id)
);

任何公司都可以与任意数量的标签链接。我需要选择附有所有指定标签的公司。例如,我需要具有tag_id = 1,2,3的company_id(所有这些!)我遇到的查询很丑陋:

SELECT company_id, GROUP_CONCAT(tag_id) as group_concat_tag_id
FROM tbl_company_tag_link
WHERE tag_id IN (1,2,3)
GROUP BY company_id
HAVING group_concat_tag_id = "1,2,3"

我需要编写查询的帮助,那会很快。


阅读 124

收藏
2021-05-10

共1个答案

admin

您可以尝试以下方法:

SELECT company_id
FROM tbl_company_tag_link
WHERE tag_id IN (1,2,3)
GROUP BY company_id
HAVING COUNT(DISTINCT tag_id ) = 3
2021-05-10