SQL合并两个查询结果2

时间:2020-06-07 10:04:58

标签: sql

查找船名和颜色,以及保留“绿色”船的水手的名字。

如何将它们组合在一起?

select B.bname, B.color
from Boats B

select S.sname
from Sailors S
where S.sid in (select s.sid
                from Sailors s, Reserves r, Boats b
                where s.sid = r.sid and r.bid = b.bid and b.color = 'green');

我已经尝试过了,但是重复了

select B.bname, B.color, S.sname
from Boats B, Sailors S
where S.sid in (select s.sid
                from Sailors s, Reserves r, Boats b
                where s.sid = r.sid and r.bid = b.bid and b.color = 'green');

1 个答案:

答案 0 :(得分:0)

您可以使用join。您应避免使用隐式联接来获得最佳实践,而应使用ANSI join语法,如下所示。

select 
    b.bname, 
    b.color,
    s.sname
from Sailors s
join Reserves r
on s.sid=r.sid
join Boats b
on r.bid=b.bid
where b.color='green'  

如果上述结果为您提供了重复项,则可以将distinct用作distinct b.bname