ORA 01427 單行子查詢返回多於乙個行,請問怎麼改?

時間 2025-05-29 09:20:26

1樓:網友

提示不是很清楚嗎?

這個問題出現的原因是這樣的,你不能保證一行改出來的結果是唯一的。

比如說一張表如此。

id score

對id為1的學生修改成績的時候,如果只有乙個score是不會報錯的,但是如果出現多個,資料庫就不知道該如何修改埋緩這個成績了。

比如說另外一張表穗知有兩個記錄。

id score

一旦你將兩張表關聯,更新第一張表的成績的時候就會出現這樣的錯誤。

解決得方法很多,比如你在更新的時候對第二張表預先max分組猜液消,然後取最大的乙個成績。或者平均的乙個成績,或者最小的,再或者改變條件,保證結果只有乙個。

2樓:網友

update cableasset t set sum( from cablebody t1 where )

這樣猜叢就好叻~遞迴巢狀判大很舒服的呵呵掘兆豎~

3樓:網友

你試試陸祥茄這樣早察宴旁:

update cableasset t set = select sum( from cablebody t1 where = where exists (select from cablebody t1 where =

ora-01427: 單行子查詢返回多於乙個行

4樓:殤忄路

單行子查詢返回多於乙個行。

update lz_cont a

set ( =

select distinct

from b

where =

where < '20141024';

這樣試試,加乙個distinct,因為(select distinct

from b

where = 這個結果集裡反回了多行資料,應該是重複的(如果你的邏輯沒錯的話)加個distinct去重。

5樓:網友

返回多條記錄應該不能更新,應該是第乙個查詢沒有返回那兩條相同的資料,因此可以更新。

ora-01427:單行子查詢返回多個行

6樓:xummer_昔年

由於查詢結果有多行造成,確保查詢結果只有一行資料。這樣就不會報錯了。

錯誤例子】解決方法:

查詢中肯定有返回多行的情況,試著在子查詢中加入rownum<2,也就是限制返回一行資料。

更改後的:

7樓:流浪雲風

這個錯誤是由於你的查詢結果有多行造成的,因為你要into給變數a,所以只能查出一行,應該在where條件處控制,確保查詢結果只有一樣資料。這樣就不會報錯了。

如果不能確定記錄為一行,可以這樣寫:select 欄位1 into 變數a from 表a where 條件 and rownum = 1;

8樓:網友

select 欄位1

into 變數a

from 表a

where 條件。

根據條件 查出來多行 欄位1

9樓:網友

變數適用於單個值 你where條件裡檢索出來的值可能是多個 這個時候可以把這些值放到遊標裡。

10樓:情又獨中

查出來的不止乙個結果。

ora-01427: 單行子查詢返回多個行 怎麼改造?

11樓:匿名使用者

不知道是資料重複? 還是資料大小的問題了。

如果那個子查詢, 返回多行相同的資料, 可以使用 distinct 來處理。

例如:update eq_gpcs_placesupplydtl dtl set placesupplyid=(

select distinct placesupplyid from eq_gpcs_placesupply bill where =

where = ''

如果那個子查詢, 返回多行不同的資料, 可以使用 max 或者 min 來處理。

例如:update eq_gpcs_placesupplydtl dtl set placesupplyid=(

select max( placesupplyid ) from eq_gpcs_placesupply bill where =

where = ''

ora-01427: 單行子查詢返回多於乙個行

12樓:網友

改一下update mis_ set value = '1', text = '合' where facilityid in (select rid from mis_ where gid = 212318) and nameen= 'kgzt'

只能等於乙個值,用in的話就能等於多個值了,select rid from mis_ where gid = 212318查詢結果肯定大於一條,所以資料庫無法識別出來,改成in就沒問題了。

13樓:

單獨執行下select rid from mis_ where gid = 212318,應該會有多於一筆的資料,改一下讓它只出來一筆就ok了。

oracle ora-01427:單行子查詢返回多個行

14樓:網友

找每個子查詢的主鍵,只要主鍵沒有完全包含在子查詢的where子句中,就有可能發生該錯誤。另外你可以在where子句中新增and rownum<=1來解決。

不過最好還是查清原因再考慮解決方案,因為說不定就是你漏掉了某些主鍵條件。

15樓:網友

(select sheettypename from

sheettype where id=(select sheettypeid from moduletype where moduleid=trim(

可能是這個語句中的子查詢返回了多個行,正常的話至允許返回乙個值。

16樓:匿名使用者

在你的子查詢中返回多行,你的限制不全。

oracle資料庫查詢報錯:ora-01427: 單行子查詢返回多個行

17樓:

nvl是乙個標量函式,在你的sql語句中,nvl第乙個引數是乙個子查詢。而該子查詢是按日期統計使用者登入的次數(group by ,如果查詢範圍在一天之內,因為就是乙個值,子查詢的結果集中只有一條記錄,是沒有問題的;而如果查詢的日期範圍超出1天,且有使用者在不同的日期有登入,那麼子查詢的結果集將會有多個記錄。這樣,nvl函式的第乙個引數就是乙個多值的結果集,而不是乙個單值的結果集,就發生ora-01427的錯誤了。

ora-01427: 單行子查詢返回多於乙個行

18樓:匿名使用者

跟我遇到同樣的問題。update house_goufbtsqxin a

set shurusj=(select from house_dsrjtgmzfzcxbtff b,house_goufbtsqxin a where

where exists (select 1from house_dsrjtgmzfzcxbtff b,house_goufbtsqxin a

where =

但是未能解決。我也很頭疼。

如何處理ORA 600 2662錯誤

如果搞不定,可以使用。網頁鏈結。oracle資料庫異常恢復檢查指令碼 oracle database recovery check 收集資訊,然後我們進行評估判斷。如果搞不定,可以使用。網頁鏈結 oracle資料庫異常恢復檢查指令碼 oracle database recovery check 收集...

ORA 12170 TNS 連線超時怎麼回事

我這邊情況是防火牆惹的事,因為在oracle伺服器端沒有開通1521埠,而且伺服器防火牆是開啟狀態。解決方案就是開通oracle埠1521,防火牆設為啟用狀態。 1 你在伺服器上是否 可以正常登入資料庫並查詢資料sqlplus2 伺服器上 用sqlplus user pwd orcl 的方式能否登入...

oracle 建表 提示 ora 00955 名稱已由現有對

select a.object type,a.from user objects a where a.object name 裝置執行庫房 查下看看,是不是已經有檢視或者過程存在。建立表時,如果報ora 00955名稱已由現有物件使用但select時候,又查不到。還有可能。同義詞重名了。在synon...