order by子句中使用子查询

complety 2011-10-10 08:02:32
有2个表 employees和salary,用employeeID联系起来,employees里面有name,employeeID,workyear,sex,birthday等等,然后salary里面有employeeID和inCome和outcome。在order by子句中使用子查询,查询员工姓名,性别和工龄信息,要求按实际收入从大到小排列
...全文
543 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-10
  • 打赏
  • 举报
回复
还有这样的需求??呵呵..
complety 2011-10-10
  • 打赏
  • 举报
回复
亲 谢谢你们 不纠结那个子查询了
-晴天 2011-10-10
  • 打赏
  • 举报
回复
select * from employees a order by (select income-outcome from salary where employeeid=a.employeeid)
complety 2011-10-10
  • 打赏
  • 举报
回复
我也想连接诶,可是题目的要求是子查询
-晴天 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 complety 的回复:]
不是连接啊 ! 在order by子句中使用子查询,查询员工姓名,性别和工龄信息,要求按实际收入从大到小排列。是在order by子句中使用子查询
[/Quote]

最好的办法是连接,即使不查salary表中的内容,连接后以其内容来排序,也是比较合理的.
使用子查询,仍然要从这个表与主表之间的连接关系来处理,没有连接来得直接,而且也不是太好处理.
奋斗糖糖成 2011-10-10
  • 打赏
  • 举报
回复
oracle多表查询:
select e.name,e.sex,e.workyear from employees e,salary s where e.employeeID=s.employeeID order by s.inCome desc;

complety 2011-10-10
  • 打赏
  • 举报
回复
不是连接啊 ! 在order by子句中使用子查询,查询员工姓名,性别和工龄信息,要求按实际收入从大到小排列。是在order by子句中使用子查询
Lemon2050 2011-10-10
  • 打赏
  • 举报
回复
强烈建议使用inner join,而不是left join

select t1.name,t1.employeeID,t1.workyear,t1.sex,t1.birthday from employees t1
inner join salary t2 on t1.employeeID=t2.employeeID
order by t2.inCome desc
koumingjie 2011-10-10
  • 打赏
  • 举报
回复

select t1.name,t1.employeeID,t1.workyear,t1.sex,t1.birthday from employees t1
left join salary t2 on t1.employeeID=t2.employeeID
order by t2.inCome desc
Simocandy 2011-10-10
  • 打赏
  • 举报
回复
我刚刚入门这个sql,对我很有帮助。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧