未明確定義列的錯誤

運行環境: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.)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章