嵌套 SQL 查询
Posted
技术标签:
【中文标题】嵌套 SQL 查询【英文标题】:Nested SQL Query 【发布时间】:2010-10-03 15:17:55 【问题描述】:我有以下表格:
俱乐部:Club_ID |标题 |创建日期 | ...
Club_Intesect:用户 ID |俱乐部_ID |访问
我正在尝试选择数量不定的俱乐部,并加入该俱乐部中具有最高访问权限的用户的 ID。此人被视为所有者。
因此,如果 Club 100 的成员 A、B、C 分别具有访问权限 3、4 和 5:我希望最终查询从俱乐部中进行选择:
Club.Club_ID Club.Title Club.Created_Date Club_Intersect.User_ID
100 | "Test Club" | "Creation Date" | C |
101 | "Test Club 2" | "Creation_Date" | Highest Access User |
...
【问题讨论】:
这里有很多混乱。您的结果使用Club.Date
和Club_Intersect.Owner_ID
,它们都不存在于您的表中。您要求“最高”访问权限,但在示例输出中选择最低 (3
您的示例表列与查询结果列不匹配。 'Club.Date' 和 'Club_Intersect.Owner_ID' 均未定义。
对不起,你说的都对,我粗心了。现在应该更有意义了。
可以假设只有一个用户拥有最大访问权限吗?
【参考方案1】:
SELECT * FROM Club c
JOIN Club_Intesect ci ON ci.Club_ID = c.Club_ID
WHERE ci.Access = (SELECT MAX(Access) FROM Club_Intesect WHERE Club_ID = c.Club_ID)
未经测试,但你明白了
【讨论】:
由于所需的结果是 3,而不是 5,因此您可能需要 MIN 而不是 MAX。 ...我认为期望的结果是最大访问权限 (5)。 其实是5,抱歉原来的错别字。 没关系,编辑了很多,我也有点糊涂了【参考方案2】:SELECT * FROM Club WHERE CLUB_ID = (SELECT Club_ID FROM Club_Intersect ORDER BY Access DESC LIMIT 1);
我认为这适用于使用嵌套 SQL 查询来选择您想要的俱乐部。您没有在返回的结果中指定您想要的内容,因为此查询只会检索 Club 列。
【讨论】:
以上是关于嵌套 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章