mysql - 多字段值的 SQL 查询

标签 mysql

我花了几个小时寻找答案,但我认为我可能没有找到正确的方向。这是我的问题:

假设我有一个像这样的简单表格:

entity_id    delta    option_id
-------------------------------
1            0        10
1            1        11
2            0        10
2            1        11
2            2        12

我有一个多值字段,我想找到具有 option_id (10,11,12) 的那个,它应该返回 entity_id = 2。我试过使用 IN,但它不够“精确”,我的意思是我可以搜索 option_id (11,12),它仍然会返回 entity_id 2,这不是我想要的。 我已经尝试过 ALL,但我认为这不是我想要的。 非常感谢你的帮助。我很确定答案在其他人的帖子中,但我没能找到。

埃德

最佳答案

您在此处使用 GROUP BY 和 HAVING 来查找包含您要查找的所有项目的元素。

SELECT t.entity_id
    FROM your_table t
    WHERE t.option_id IN (10,11,12)
    GROUP BY t.entity_id
    HAVING COUNT(DISTINCT t.option_id) = 3; /* because there are 3 elements in the IN clause */

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

相关文章:

php - 将脚本从 PHP 5.6 移至 PHP 7

java - JPA 存储库 :Delete a row from database using native query

php - 使用自然连接运行查询时出现问题

mysql - 如何在 Spring Data JPA 中搜索 [FieldName]

mysql - 如何在此代码中添加只能输入某些字符的约束?

c# - 每次获取Mysql后用逗号获取Mysql数据 C# Mysql

java - 从 Glassfish 迁移到 Wildfly/JBoss

php - 使用 Laravel 5.3 和 Codeigniter 的多数据库设计应用程序

sql - 我可以将非聚合列与 group by 一起使用吗?

MySQL:查询时 "escape ' !'"意味着什么