我在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 回答
由于您说哪个服务包含每个用户,因此您需要使用聚合来确定这一点 . 这是一种方式:
选择user_id
来自premium_users
group by user_id
有count()=(从premium_services中选择count())
SQL小提琴演示根据您的数据,您可能需要计数(不同的premium_service_id),但您应该具有不允许在这些表中重复的约束 .
重读你的问题,我可能会倒退 . 看起来您想要一个高级服务列表而不是用户 . 同样的概念适用: