[英]ORA-01427 single-row subquery returns more that one row
I have run into a problem with Oracle SQL the Error is: ORA-01427 single-row subquery returns more that one row I am trying to find the locations that have at least one vehicle with manual 我遇到了Oracle SQL的问题,错误是: ORA-01427单行子查询返回的行数多于我正在尝试查找具有至少一部手动车辆的位置
transmission that has lower mileage than any luxury vehicle at that location. 变速箱的行驶里程低于该位置的任何豪华车。
Here is My Table 这是我的桌子
VID MILEAGE LOCATION VSIZE TRANSMISSION
----------------------------------------------------------------------
V-101 70 AHMD COMPACT AUTOMATIC
V-102 50 SURAT COMPACT AUTOMATIC
V-103 10 AHMD MID-SIZE MANUAL
V-104 30 AHMD MID-SIZE AUTOMATIC
V-105 15 VADODARA FULL-SIZE AUTOMATIC
V-106 20 AHMD LUXURY AUTOMATIC
V-107 50 AHMD LUXURY MANUAL
And this is my Query: 这是我的查询:
SELECT location, transmission, mileage FROM vehicles_workshop
WHERE transmission = 'MANUAL' AND mileage =
( SELECT DISTINCT mileage FROM vehicles_workshop WHERE mileage <
(SELECT MAX(mileage) FROM vehicles_workshop WHERE vsize = 'LUXURY')
);
Instead of equal to operator use IN
before subquery 在子查询之前使用IN
代替等于运算符
SELECT location, transmission, mileage FROM vehicles_workshop
WHERE transmission = 'MANUAL' AND mileage IN
( SELECT DISTINCT mileage FROM vehicles_workshop WHERE mileage <
(SELECT MAX(mileage) FROM vehicles_workshop WHERE vsize = 'LUXURY')
);
Your subquery for comparing mileage is returning more than one value but equal to operator can work to compare only single values and so error is thrown. 您的用于比较里程的子查询返回多个值,但等于运算符只能比较单个值,因此会引发错误。
SELECT location, transmission, mileage
FROM vehicles_workshop t1
WHERE transmission = 'MANUAL' --manual transmission
AND EXISTS
( SELECT *
FROM vehicles_workshop t2
WHERE vsize = 'LUXURY' --luxury vehicle
AND t2.location = t1.location --same location
AND t2.mileage > t1.mileage) --higher mileage
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.