【问题标题】:MySql How Return All Items Which Contain All Selected FeaturesMySql 如何返回包含所有选定特征的所有项目
【发布时间】:2019-02-01 08:43:45
【问题描述】:
assigned_features

feature_id      |   item_id
-----------------------------------------------
1               |   1
2               |   1
3               |   1
1               |   2
2               |   2
1               |   3

使用 mysql,我试图返回包含所有选定功能的所有项目。

例如,我希望返回 feature_id = 1 和 2 的项目。这应该返回 item_id 1 和 2。

或者,如果我只想检索 feature_id = 1,2 和 3 的项目,则结果应该产生项目 1。

我真的不知道从哪里开始。

谢谢!

【问题讨论】:

    标签: mysql sql database select where


    【解决方案1】:

    你可以做聚合:

    select item_id
    from assigned_features af
    where feature_id in (1,2)
    group by item_id
    having count(distinct feature_id) = 2;
    

    类似地,您可以增加第二个示例的计数:

    select item_id
    from assigned_features af
    where feature_id in (1,2,3)
    group by item_id
    having count(distinct feature_id) = 3;
    

    但是,如果item_id 没有重复的feature_ids,则DISTINCT 在这里是多余的,那么您可以改用count(*) = 2count(*) = 3

    【讨论】:

    • 非常感谢您的回答。我从你那里学到了一些新东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-07-23
    • 2023-03-12
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多