在mysql中使用JOIN和subquery
大约两周前,我发布了一个关于SQL表之间“一对多”关系的问题。现在我有一个不同的场景。基本上,有两个表-咖啡用户和咖啡产品注册。后者通过“uid”列连接到coffee_users表。基本上,coffee_users.uid=coffee_product_registrations.uid 一个用户可以注册多个产品 我想做的是显示一些产品信息(来自coffee_product_注册)以及一些用户信息(来自coffee_用户),但只检索那些有1个以上产品注册的行 为了简化,我需要采取以下步骤:在mysql中使用JOIN和subquery,mysql,sql,sql-server,select,join,Mysql,Sql,Sql Server,Select,Join,大约两周前,我发布了一个关于SQL表之间“一对多”关系的问题。现在我有一个不同的场景。基本上,有两个表-咖啡用户和咖啡产品注册。后者通过“uid”列连接到coffee_users表。基本上,coffee_users.uid=coffee_product_registrations.uid 一个用户可以注册多个产品 我想做的是显示一些产品信息(来自coffee_product_注册)以及一些用户信息(来自coffee_用户),但只检索那些有1个以上产品注册的行 为了简化,我需要采取以下步骤: 连接
SELECT c.uid, c.name, cpr.model
FROM coffee_users c
JOIN coffee_product_registrations cpr on c.uid = cpr.uid
GROUP BY c.uid
HAVING COUNT(cpr.uid) > 1
这将联接“uid”列上的两个表,但每个用户只显示一行。它只选择注册了多个产品的用户
现在我需要使用这些ID,并根据它们从coffee_product_注册中选择所有产品
我不知道如何在一个查询中使用这个 用要从查询中提取的列替换
cpr.*,c.*
试试这个:
SELECT cpr.*, c.*
FROM coffee_product_registrations cpr
INNER JOIN coffee_users c ON c.uid = cpr.uid
INNER JOIN (SELECT cpr.uid
FROM coffee_product_registrations cpr
GROUP BY cpr.uid
HAVING COUNT(DISTINCT cpr.productId) > 1
) AS A ON c.uid = A.uid;
返回一个空结果。那么我应该有两个内连接吗?我可以不要吗?好的,我现在就要。谢天谢地。我已经创建了两个用户名——user1和user2。user1有2个产品在coffee_product_注册下注册,user2只有1个。因此,查询应该选择user1的所有产品,并且除了显示user1的电子邮件和ID之外,还显示这两个产品。我不确定您所说的表格式是什么意思,但我试图实现的是:显示注册了多个产品的用户的所有产品,每个产品都应该同时显示用户的电子邮件和ID。一个用户可以他们想注册多少产品就注册多少。我只想选择注册了1个以上产品的用户,然后我想显示这些用户拥有的每个产品的产品详细信息。