我有一个查询,需要对来自DB2数据库的结果进行排序。查询将选择列empname,salary,status
。但我必须使用empno
进行排序。
但是这个查询无法正常工作... 这是查询语句:
select empname, salary, status from emp where salary>5000 order by empno
你能否更新查询语句,以empno
排序,而不使用它作为选取列的一部分?
我有一个查询,需要对来自DB2数据库的结果进行排序。查询将选择列empname,salary,status
。但我必须使用empno
进行排序。
但是这个查询无法正常工作... 这是查询语句:
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;
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;
我不确定,但在数据库上最快的方法大概是这样的:
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 子句
最好的祝福