我們可能會出現這種情況,某個表原來設計不周全,導致表裡面的資料資料重複,那麼,如何對重複的資料進行刪除呢? 重複的資料可能有這樣兩種情況,第一種時表中只有某些欄位一樣,第二種是兩行記錄完全一樣。一、對於部分欄位重複資料的刪除 先來談談如何查詢重複的資料吧。 下面語句可以查詢出那些資料是重複的: select 欄位1,欄位2,count(*) from 表名 group by 欄位1,欄位2 having count(*) > 1
ORA-01034: ORACLE not availablelarry ! 求助 ORA-01034: ORACLE not availableoracle安裝、啟動後用sqlplus "/ as sysdba" 登陸,執行任何select語句都出現錯誤:select * from dictionary*ERROR at line 1:ORA-01034: ORACLE not
1.曾經不小心把開發庫的資料庫表全部刪除,當時嚇的要死。結果找到下面的語句恢複到了1個小時之前的資料!很簡單。注意使用管理員登入系統:select * from 表名 as of timestamp sysdate-1/12 //查詢兩個小時前的某表資料!既然兩小時以前的資料都得到了,繼續怎麼做,知道了吧。。如果drop了表,怎麼辦??見下面:drop table 表名;資料庫誤刪除表之後恢複:( 絕對ok,我就做過這樣的事情,汗 )不過要記得刪除了哪些表名。flashback
有這樣的一個需求:更新A表的一行記錄,如果找到並更新了記錄,向B表寫一條記錄用一條sql寫好像比較麻煩,寫一個小過程如下begin update A XXXX; if (sql%rowcount 0) then insert into BXXX; end if;end;sql%rowcount儲存了update影響的記錄條數如果需要判斷影響了多少條,如,更新了3條才插入還可以用 if (sql%rowcount = 3)
1.select ...connect by prior ...start with的用法:select ... from <tablename>where <conditional-1> --過濾條件,用於對返回的所有記錄進行過濾start with <conditional-2> --查詢結果從起始根節點的限定條件connect by prior <conditional-3> --串連條件 資料庫表結構如下:create table
在寫sql時,經常會有將某列的欄位合并起來,比如將某人名下每個月的工資列示,但是每個人只能佔一行。 像這種情境,可能用行列轉換也能實現,但如果這個月份的資訊不固定,就無法使用行列轉換了。 oracle10g以後,提供了一個函數WMSYS.WM_CONCAT,能很輕鬆實現該功能。select t.rank, WMSYS.WM_CONCAT(t.Name) TIME From t_menu_item t GROUP BY t.rank; 這樣,看著就舒服多了。
Oracle Connect By用法oracle中的select語句可以用START WITH...CONNECT BY PRIOR子句實現遞迴查詢,connect by 是結構化查詢中用到的,其基本文法是:select ... from <TableName> where <Conditional-1>start with <Conditional-2>connect by <Conditional-3>;<Conditional-1&