查找提供红色或蓝色的供应商ID。无需使用join语句就能做到这一点。
num suppliers color
------ ------- --------
1 Sam yellow
2 Ana black
3 Eva red
4 Tom blue
5 Simon blue
6 Ema green
id num
---- ------
01 1
02 2
03 3
04 4
05 5
05 4
结果应该是这样的:
id suppliers color
----- ------ -------
03 Eva red
04 Tom blue
05 Simon blue
05 Tom blue
我的解决方案是这样,但是仍然没有给我应有的结果。 有人可以帮我吗?
select id, suppliers, color
from suppliers, parts
where color = 'blue' or color = 'red';
答案 0 :(得分:2)
您已经在进行联接-一个用逗号分隔的隐式联接。
今天的提示:始终使用现代的,明确的JOIN
语法。 更容易编写(没有错误),更易于阅读和维护,并在需要时更容易转换为外部联接!
select p.id, s.suppliers, s.color
from suppliers s
JOIN parts p ON s.num = p.num
where s.color IN ('blue', 'red')
还要使用表别名(s
,p
)并限定列,例如s.num
。
免注册版本:
select *
from
(
select p.id,
(select s.suppliers from suppliers s where s.num = p.num) suppliers,
(select s.color from suppliers s where s.num = p.num) color
from parts p
) dt
where color in ('blue', 'red');