SELECT 查询结果额外增加自动递增序号?

yilin54 2012-01-09 01:56:43

SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号) FROM 订单 AS Chang where 合同号='009' ORDER BY 1


这个查询实现了在订单表中查找合同号为“009”记录所在的顺序号。
不过这个语句我看不懂,能否详细的解释下。
这里的别名LiMing,Chang都是什么关系?
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yilin54 的回复:]

在请教下,这样的语句,效率是不是比较低的呀?每求一个序号都要这样全局的加一下
引用 4 楼 maco_wang 的回复:
SQL code

SELECT 序号=
(SELECT COUNT(合同号) FROM 订单 WHERE 合同号<= Chang.合同号)
FROM 订单 AS Chang where 合同号='009' ORDER BY 1


这样你好理解一些,少一个……
[/Quote]

数据量小的时候没有问题,在SQL SERVER 2005+的版本出现了row_number().
yilin54 2012-01-09
  • 打赏
  • 举报
回复
在请教下,这样的语句,效率是不是比较低的呀?每求一个序号都要这样全局的加一下
[Quote=引用 4 楼 maco_wang 的回复:]
SQL code

SELECT 序号=
(SELECT COUNT(合同号) FROM 订单 WHERE 合同号<= Chang.合同号)
FROM 订单 AS Chang where 合同号='009' ORDER BY 1


这样你好理解一些,少一个别名也可以的
[/Quote]
yilin54 2012-01-09
  • 打赏
  • 举报
回复
老兄,你错的,[Quote=引用 3 楼 beirut 的回复:]
SQL code
SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号 and LiMing.合同号='009')
FROM 订单 AS Chang where 合同号='009' ORDER BY 1
[/Quote]
yilin54 2012-01-09
  • 打赏
  • 举报
回复
好人呀。。。
[Quote=引用 4 楼 maco_wang 的回复:]
SQL code

SELECT 序号=
(SELECT COUNT(合同号) FROM 订单 WHERE 合同号<= Chang.合同号)
FROM 订单 AS Chang where 合同号='009' ORDER BY 1


这样你好理解一些,少一个别名也可以的
[/Quote]
fanzhouqi 2012-01-09
  • 打赏
  • 举报
回复
这序号很蛋疼,还是在应用程序段解决的比较好
叶子 2012-01-09
  • 打赏
  • 举报
回复

SELECT 序号=
(SELECT COUNT(合同号) FROM 订单 WHERE 合同号<= Chang.合同号)
FROM 订单 AS Chang where 合同号='009' ORDER BY 1

这样你好理解一些,少一个别名也可以的
黄_瓜 2012-01-09
  • 打赏
  • 举报
回复
SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号  and LiMing.合同号='009') 
FROM 订单 AS Chang where 合同号='009' ORDER BY 1
黄_瓜 2012-01-09
  • 打赏
  • 举报
回复
SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号  where LiMing.合同号='009') 
FROM 订单 AS Chang where 合同号='009' ORDER BY 1

里面也应该机上 LiMing.合同号='009' 这个条件吧
超凡 2012-01-09
  • 打赏
  • 举报
回复
SELECT 序号= (SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号) FROM 订单 AS Chang where 合同号='009' ORDER BY 1



--SELECT COUNT(合同号) FROM 订单 AS LiMing WHERE LiMing.合同号<= Chang.合同号
查询小于或等于'009'的合同号记录行!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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