簡體   English   中英

ORA-01427單行子查詢返回的行多

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM