Oracle SQL查询:按价格从高到低获取全设备信息(含厂商)
修正后的Oracle SQL查询语句
需求说明
查询所有设备(PC、笔记本电脑、打印机),输出字段包含serial_number、maker、price、type,并按价格从高到低排序。其中maker和type来自Product表,所有设备表通过model字段与Product表关联。
修正后的SQL代码
WITH all_devices AS ( -- 合并所有设备的核心信息:序列号、型号、价格 SELECT serial_number, model, price FROM PC UNION ALL SELECT serial_number, model, price FROM Laptop UNION ALL SELECT serial_number, model, price FROM Printer ) -- 关联Product表获取厂商和设备类型,再按价格降序排序 SELECT ad.serial_number, p.maker, ad.price, p.type FROM all_devices ad JOIN Product p ON ad.model = p.model ORDER BY ad.price DESC;
代码说明
- 使用
UNION ALL替代UNION:三个设备表的serial_number均为主键,不会出现重复记录,UNION ALL性能更优 - CTE
all_devices整合所有设备的基础信息,避免重复编写关联逻辑 - 通过
JOIN关联Product表,获取所需的maker和type字段 - 最后用
ORDER BY ad.price DESC实现价格从高到低排序
内容的提问来源于stack exchange,提问作者KaedeZeelich
相关产品推荐
相关产品推荐

