Oracle 未明確定義列的錯誤____Oracle

來源:互聯網
上載者:User
運行環境:Oracle10g sqlplus環境下。 
在查詢語句中,經常會出現一個錯誤: 
SQL基礎:ORA-00918:未明確定義列的錯誤。 

當前遇到有兩種情況。原因為:當查詢語句中,查詢的表(資料集)中有相同的欄位名,查詢欄位無法確認是改查那個欄位 
時,就會報未明確定義列的錯誤。 

第一種情況: 
1.單表時: 
比如fconsign表中存在三個欄位:fcsg_consign_id,fcsg_consign_type,fcsg_consign_status 
SELECT FCSG_CONSIGN_ID FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T
這個SQL語句就會報錯,因為在T中FCSG_CONSIGN_ID有兩個欄位,導致DBMS無法確定要查詢的哪個列 
SELECT FCSG_CONSIGN_STATUS FROM (SELECT FCSG_CONSIGN_ID,FCSG_CONSIGN_TYPE,FC.* FROM FCONSIGN FC) T 
這樣就不會報錯了,T中FCSG_CONSIGN_STATUS只有一個,這樣就不會報錯了。 

總而言之:在巢狀查詢中,外查詢的欄位在子查詢中只能出現一個,否則則無法確定是要查哪個欄位。就會報 未明確定義列的錯誤。 

2.多表聯集查詢 
比如表A,B中都有a欄位。 

select a from A,B 這樣就要報錯。因為也是無法確定查 哪一列。需要明確定義A.a或者B.a (如果在from語句後面為表取了別名,比如 

select s_no,s_name,s_score,s.class_no,class_name from student s join class c on (s.class_no = c.class_no)的時候, 則 select語句中那個被多張表都擁有的相同欄位名也需要用別名標識 如:s.class_no.)


轉載自:http://blog.csdn.net/wxdsdtc831/article/details/7432774

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.