2012-07-19 58 views
6

我有一个查询,我必须对来自DB2数据库的结果进行排序。该查询将选择列empname,salary,status。但我必须使用命令排序结果empno
但查询不起作用。这是查询。排序查询结果没有选择该列,但按该列排序?

select empname, salary, status from emp where salary>5000 order by empno 

您可以更新而不选择列使用它的查询通过empno排序?

+1

删除的点,然后再试一次。 – Adam 2012-07-19 05:25:16

+1

请发布表的创建SQL。 – kirbs 2012-07-19 13:03:31

+0

感谢您的时间..它是工作..我从多个表中选择,但empno是歧义..现在更新..工作.. – 2012-07-19 13:58:26

回答

4

您的语法对我来说似乎是正确的,除了点(。)在最后。去除点之后,如果不工作...

尝试像

SELECT empname, salary, status 
    FROM (SELECT * 
      FROM emp 
     ORDER BY empno) 
WHERE salary > 5000 
+0

您好jaychapani,您的查询不工作..你能正确更新它? – 2012-07-19 05:38:47

+0

它给出的错误是什么? – jaychapani 2012-07-19 05:43:23

+2

根据IBM的文档“ORDER BY子句中指定的列不需要包含在SELECT子句中。” – jaychapani 2012-07-19 05:46:09

-1

试试这个

select empname, salary, status from emp where salary>5000 order by empno asc 

确保列和表名确实存在。

看看:ORDER BY clause

问候

+0

为什么粘贴相同的查询? – 2012-07-19 05:34:49

+0

点被删除,我添加了asc(上升)或使用desc降序您的数据。 – BizApps 2012-07-19 05:37:26

+0

虽然执行我删除它,但没有用..不工作BizApps .. – 2012-07-19 05:39:55

0

我不知道,但DB最快的方法是这样的:

SELECT empname, salary, status 
FROM (
    select empname, salary, status, empno 
    from emp 
    where salary > 5000 
    order by empno ASC 
)