簡體   English   中英

子查詢返回的值超過1。 當子查詢遵循> =或將子查詢用作表達式時,不允許這樣做

[英]Subquery returned more than 1 value. This is not permitted when the subquery follows>= or when the subquery is used as an expression

子查詢返回了1個以上的值錯誤。 如何解決呢?

SELECT top 1 address
FROM tblAdr A
WHERE A.pkey=
  (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL
  )

子查詢(括號中的數量)返回多個pkey值,這是不允許的,因為需要單個標量值。 如果你滿足於檢查是否pkeytblAdr匹配任何的子查詢中的值,那么你可以使用WHERE A.pkey IN (...)如下所示:

SELECT TOP 1 address
FROM tblAdr A
WHERE A.pkey IN (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL)

=更改為IN

select top 1 address from tblAdr A where A.pkey in (select b.pkey from tblMachine b where b.ADDRESS_PKEY is null)

這應該可以修復錯誤,但是查詢的邏輯可能存在缺陷。 您僅排在后面( select top 1 ),但是您沒有定義應該首先選擇哪一行(沒有order by子句)。

使用IN代替=因為您的子查詢返回多個匹配的行。

SELECT top 1 address
FROM tblAdr A
WHERE A.pkey IN
  (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL
  );

另外,請始終將熱門查詢與order by一起使用。

此子查詢“從tblMachine b中選擇b.pkey,其中b.ADDRESS_PKEY為null”返回多個值,您無法將其與“ =”運算符進行比較,但您需要此try in子句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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