我有一个查询,我必须从DB2数据库中排序结果。查询将选择列empname,salary,status
。但我必须按照empno的顺序对结果进行排序
但查询不起作用..这是查询。
select empname, salary, status from emp where salary>5000 order by empno
您可以更新查询以按empno
排序而不使用它来选择列吗?
答案 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
确保列和表名确实存在。
最好的问候