在查詢語句中,常常會出現一個錯誤:
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 這樣就要報錯。由於也是沒法肯定查
web
哪一列。須要明肯定義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.)spa