mysql - 匹配多个列值的 SQL 查询

标签 mysql sql

我无法解决以下问题。

给定以下表结构和数据,我如何选择匹配两个标签的记录。例如:

+-----------------+------------------+
|  collection_id  |         tag      |
+-----------------+------------------+
|        1        |    advertising   |
|        1        |     tutorials    |
|        2        |    advertising   |
|        2        |       coding     |
+-----------------+------------------+

如果我搜索广告 && 教程,它应该返回 collection_id = 1,而不是 collection_id = 2。

欢迎任何指点。

最佳答案

SELECT collection_ID
FROM tableName
WHERE tag IN ('advertising','tutorials')
GROUP BY collection_ID
HAVING COUNT(*) = 2

如果未在每个 collection_ID 的标签上指定 unique 约束

SELECT collection_ID
FROM tableName
WHERE tag IN ('advertising','tutorials')
GROUP BY collection_ID
HAVING COUNT(DISTINCT tag) = 2

关于mysql - 匹配多个列值的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375028/

相关文章:

php - 我无法运行 xampp - MySQL 意外关闭

sql - 微软 SQL : Should ISDATE() Return "1" when Cannot Cast as Date?

mysql - SQL - 选择按日期排序的最后一行

mysql - SELECT语句奇怪地打印数据

php - 发送自动电子邮件

php - PDO::rowCount 与 COUNT(*)

java - Eclipse Oxygen 没有 MySql 的驱动程序定义

php - 如何选择 id 仅高于空白的行

php - ERD图设计问题

sql - TSQL - 在Where 子句中使用派生的选择列