[英]ORA-01427 single-row subquery returns more that one row
我遇到了Oracle SQL的問題,錯誤是: ORA-01427單行子查詢返回的行數多於我正在嘗試查找具有至少一部手動車輛的位置
變速箱的行駛里程低於該位置的任何豪華車。
這是我的桌子
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
這是我的查詢:
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')
);
在子查詢之前使用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')
);
您的用於比較里程的子查詢返回多個值,但等於運算符只能比較單個值,因此會引發錯誤。
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.