Mysql SQL子查询:
我有三张桌子: 1序列号sid:INT,sname:VARCHAR30,等级:INT,年龄:INT 2船标:INT,b名称:VARCHAR30,颜色:VARCHAR10 3保留出价:整数,sid:整数,日期:日期 我不知道如何构建显示以下内容的查询:Mysql SQL子查询:,mysql,sql,subquery,Mysql,Sql,Subquery,我有三张桌子: 1序列号sid:INT,sname:VARCHAR30,等级:INT,年龄:INT 2船标:INT,b名称:VARCHAR30,颜色:VARCHAR10 3保留出价:整数,sid:整数,日期:日期 我不知道如何构建显示以下内容的查询: 至少预订了两艘不同颜色船只的船员姓名 您可以为每个水手创建一个组,然后要求该组中至少有两种不同的颜色: select s.sid , s.sname , count(distinct b.color) as NumberO
至少预订了两艘不同颜色船只的船员姓名 您可以为每个水手创建一个组,然后要求该组中至少有两种不同的颜色:
select s.sid
, s.sname
, count(distinct b.color) as NumberOfBoatColorsReserved
from Reserves r
join Sailors s
on s.sid = r.sid
join Boats b
on b.bid = r.bid
group by
s.sid
, s.sname
having count(distinct b.color) >= 2
也许有一种更有效的方法可以做到这一点,但这里有一个快速而干燥的解决方案:
SELECT sname FROM Sailors
JOIN Reserves USING (sid)
JOIN Boats USING (bid)
GROUP BY sname, color
HAVING COUNT(sname) >= 2;
增加了选择唯一投标:
SELECT bid FROM Sailors
JOIN Reserves USING (sid)
JOIN Boats USING (bid)
HAVING COUNT(bid) >= 3;
其中3表示数据库中的海员总数。这可以单独查询,只需使用COUNTTry即可。然后尝试编辑您的问题。包括您的示例数据和预期输出,尝试。