sql - 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';
解决方案
您已经在进行连接 - 一个隐含的、逗号分隔的连接。
今日提示:始终使用现代、明确的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');
推荐阅读
- r - 预订网站中的观星者
- angular - 使用直接访问 DOM 的包进行角度 DOM 操作
- typescript - 当我在全球范围内拥有打字稿时,如何在本地运行打字稿?
- azure - 多个虚拟机的共享存储
- reactjs - 在 Mutation 中出现错误时显示 SnackBar Material UI
- php -
- 在 mPDF 中无法使用内部表格列
- ping - 如何在 LAN 上可靠地 Arping 移动设备
- memory-management - 相对地址和逻辑地址之间的区别
- c# - JsonConvert.DeserializeObject 将 null 转换为空对象
- swift - 在表格视图单元格中单击按钮时显示弹出菜单