首页 文章

mysql内连接查询3个表

提问于
浏览
1

我在MySQL数据库中有一个表,称为“用户” . 用户的字段是:id,email,username,first_name,last_name . 同一MySQL数据库中的另一个表名为“premium_users”,包含2个字段:user_id,premium_service_id . 名为“premium_services”的第三个表包含2个字段:premium_service_id,premium_service_name .

我想创建一个SQL查询,以查询我的数据库,这样我就可以获得每个高级用户的高级服务的完整列表 . 我怎样才能正确地查询内连接?我试过这个:

select * from users inner join premium_users on users.id = premium_users.user_id inner join premium_services on premium_users.premium_service_id = premium_services.premium_service_id;

1 回答

  • 1

    由于您说哪个服务包含每个用户,因此您需要使用聚合来确定这一点 . 这是一种方式:
    选择user_id
    来自premium_users
    group by user_id
    有count()=(从premium_services中选择count())
    SQL小提琴演示根据您的数据,您可能需要计数(不同的premium_service_id),但您应该具有不允许在这些表中重复的约束 .

    重读你的问题,我可能会倒退 . 看起来您想要一个高级服务列表而不是用户 . 同样的概念适用:

    select ps.premium_service_id
    from premium_services ps
      join premium_users pu on ps.premium_service_id = pu.premium_service_id
    group by ps.premium_service_id
    having count(distinct pu.user_id) = (select count(distinct user_Id) from premium_users)
    

相关问题