我有一个查询,我必须对 DB2 数据库中的结果进行排序。查询将选择列empname,salary,status
。但是我必须使用 empno 的 order 对结果进行排序
但是查询不起作用.. 这是查询。
select empname, salary, status from emp where salary>5000 order by empno
您可以更新查询以进行排序empno
而不在选择列时使用它吗?
除了最后的点(。)之外,您的语法对我来说似乎是正确的。删除点后如果不起作用...
尝试类似的东西
SELECT empname, salary, status
FROM (SELECT *
FROM emp
ORDER BY empno)
WHERE salary > 5000
另一种可能更容易的语法,取决于您如何看待它是使用with
关键字。这显式地创建了一个具有所需顺序的命名临时表,然后从中进行查询。新查询的顺序将与临时表的顺序相同。
WITH temp_table AS (SELECT *
FROM emp
ORDER BY empno)
SELECT empname, salary, status
FROM temp_table
WHERE salary > 5000;
@jaychapani 的答案更简洁,并且在功能上做同样的事情,但是with
语法对于很多其他用例来说是强大的,并且在视觉上将两者分开,这可能会很有帮助,特别是如果你有一个长子查询来做其他事情。
我使用下面的查询来解决这个问题。在这种情况下,我们可以在不显示列的情况下对查询结果进行排序:
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;
我不确定,但 DB 上最快的方法是这样的:
SELECT empname, salary, status
FROM (
select empname, salary, status, empno
from emp
where salary > 5000
order by empno ASC
)
试试这个
select empname, salary, status from emp where salary>5000 order by empno asc
确保列和表名确实存在。
看看:ORDER BY 子句
最好的祝福