首页 > 解决方案 > DB2 SQL 查找提供特定颜色的供应商的 ID

问题描述

查找提供红色或蓝色颜色的供应商的 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';

标签: sqldb2

解决方案


您已经在进行连接 - 一个隐含的、逗号分隔的连接。

今日提示:始终使用现代、明确的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');

推荐阅读