排序查询结果而不选择该列但按该列排序?

时间:2012-07-19 05:20:53

标签: sql database sorting db2

我有一个查询,我必须从DB2数据库中排序结果。查询将选择列empname,salary,status。但我必须按照empno的顺序对结果进行排序 但查询不起作用..这是查询。

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

您可以更新查询以按empno排序而不使用它来选择列吗?

5 个答案:

答案 0 :(得分:7)

你的语法对我来说似乎是正确的,除了最后的点(。)。删除点后如果不起作用......

尝试类似

的内容
SELECT empname, salary, status
  FROM (SELECT   *
            FROM emp
        ORDER BY empno)
 WHERE salary > 5000

答案 1 :(得分:0)

我不确定,但DB上最快的方法就是这样:

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

答案 2 :(得分:0)

另一种可能更容易使用的语法,具体取决于您如何使用with关键字。这将显式创建具有所需顺序的命名临时表,然后从中查询。新查询的顺序将与临时表的顺序相同。

WITH temp_table AS (SELECT   *
            FROM emp
        ORDER BY empno)

SELECT empname, salary, status
  FROM temp_table
 WHERE salary > 5000;

@jaychapani的答案更简洁,并且在功能上做相同的事情,但是with语法在其他许多用例中功能强大,并且在视觉上将两者分开,这可能会有所帮助,特别是如果您有长子查询执行其他操作。

答案 3 :(得分:0)

我使用下面的查询来解决这个问题。 在这种情况下,我们可以在不显示列的情况下对查询结果进行排序:

WITH temp_table
     AS (select distinct(s1.Name),s1.id
         from students s1
         where marks>75
         order by right(s1.Name ,3) asc,s1.id asc
        )

SELECT Name
  FROM temp_table;

答案 4 :(得分:-1)

试试这个

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

确保列和表名确实存在。

查看:ORDER BY clause

最好的问候

相关问题