我收到了一个错误

时间:2016-11-17 18:26:01

标签: oracle11g

当我运行下面的查询时,我收到错误。

SELECT 'EMP_ID'||','||'LAST_NAME'||','||'FIRST_NAME'||','||'SALARY'
   FROM DUAL
   UNION ALL
   SELECT EMP_ID,LAST_NAME,FIRST_NAME,SALARY
   FROM EMPLOYEES
   ORDER BY  EMP_ID,LAST_NAME,FIRST_NAME;

错误消息:

  

“EMP_ID”:标识符无效

我在这里尝试的是用逗号

创建标题

2 个答案:

答案 0 :(得分:0)

使用UNION或UNION ALL时,UNION / UNION ALL两侧选择的列数必须相同。

在您的示例中,您在第一个查询中选择了1列(4个字符串的串联),在第二个查询中选择了4个 - 因此错误。

答案 1 :(得分:0)

你遇到了一些问题。

执行此操作时,它会形成一个列。

'EMP_ID'||','||'LAST_NAME'||','||'FIRST_NAME'||','||'SALARY'

然后你试图联合4列 - 两个select语句必须在联合中具有相同的列数。

下面的查询将起作用,因为现在它只是1列的#1

 SELECT 'EMP_ID'||','||'LAST_NAME'||','||'FIRST_NAME'||','||'SALARY' 
   FROM DUAL
   UNION ALL
   SELECT EMP_ID || ',' || LAST_NAME || ',' || FIRST_NAME || ',' ||SALARY
   FROM (Select * from EMPLOYEES order by EMP_ID,LAST_NAME,FIRST_NAME) e1;

根据您获得的错误,确保您的employees表中有一个名为“EMP_ID”的列。您还必须按列删除订单,因为它们需要出现在选择中,而不是。