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...