求助:查询R/O类型间价格上涨的通用零件及修复错误SQL脚本
解决你的通用零件价格上涨查询问题
首先得说你的原脚本为啥报错——你把三个独立的SELECT语句直接堆在一起,数据库根本没法识别这种语法,得把两个类型的数据查询合理关联起来才行。
你的需求是:找同时存在于类型R和O的零件,并且该零件在R类型的价格比O类型的高(也就是从O到R价格上涨)。这里用自连接是最直接的方案,因为我们要在同一张表里关联不同类型的记录。
正确的查询脚本
SELECT a.part, b.price AS o_price, a.price AS r_price FROM your_table_name a INNER JOIN your_table_name b ON a.part = b.part WHERE a.type = 'R' AND b.type = 'O' AND a.price > b.price;
脚本解释
- 我们把同一张表分别取别名
a(代表R类型的记录)和b(代表O类型的记录) - 通过
INNER JOIN关联两个别名表的part字段,确保零件同时存在于两种类型中 WHERE条件过滤出a是R类型、b是O类型,并且R类型的价格高于O类型的记录- 最后明确指定要返回的字段,比如零件名、O类型价格、R类型价格,比
SELECT *更清晰易读
如果你想保留原脚本的子查询思路,也可以写成这样:
SELECT r.part, o.price AS o_price, r.price AS r_price FROM (SELECT part, price FROM your_table_name WHERE type = 'R') r INNER JOIN (SELECT part, price FROM your_table_name WHERE type = 'O') o ON r.part = o.part WHERE r.price > o.price;
这个写法和自连接逻辑一致,只是先把两种类型的数据分别筛选出来作为子查询,再进行关联,效果完全相同。记得把脚本里的your_table_name替换成你实际的表名哦!
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

