[英]sql missing expression on select query in oracle
我試圖擺脫重復的工作角色,然后再將數據輸入到我的實際尺寸表中,每次運行腳本時,我都會不斷遇到表達式錯誤,並且不確定為什么,任何幫助將不勝感激。
INSERT INTO job_role_dim (
SELECT job_role_id.nextval, DISTINCT job_role_desc
FROM temp_job_role_dim);
您不應在查詢前后加上括號,並且將您的distinct
放在錯誤的位置。 您可能正在嘗試避免這樣做:
INSERT INTO job_role_dim
SELECT DISTINCT job_role_id.nextval,job_role_desc
FROM temp_job_role_dim;
...不會刪除重復項,而只是給它們不同的序列值。 因此,您需要一個子查詢:
INSERT INTO job_role_dim
SELECT job_role_id.nextval, job_role_desc
FROM (
SELECT DISTINCT job_role_desc
FROM temp_job_role_dim
);
內聯視圖查找不同/唯一值; 然后,外部查詢會為每個查詢提供序列值。
這是對亞歷克斯答案的詳盡闡述。 編寫此查詢的更好方法是使用select的列列表。 通常這是一個非常好的主意-以及其他原因,而不僅僅是查詢中的括號。 所以:
INSERT INTO job_role_dim(job_role_id, job_role_desc) -- making up these column names
SELECT job_role_id.nextval, job_role_desc
FROM (SELECT DISTINCT job_role_desc
FROM temp_job_role_dim
) t;
也就是說,SQL希望表后的括號包含列列表。 並且,這就是應該編寫INSERT
語句的方式。 包含子查詢時,解析器會感到困惑,因為它需要列列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.