sqlserver的2个遗憾、不足
sqlserver是比较好用的了 但是,还是有2个比较不好的地方: 1、存储过程的生成记录集,无法被调用者的sql拿来(截取或调用前就指定一个表变量去承接)使用 2、在sql语句里无法定义临时的函数、存储过程,然后使用它(必须实实在在的建立函数、存储过程,才能使用它们,最后还要删除它们) ? sql2005增加了varchar(max),功德无量! 但是select top n SKIP m ... from ...始终没有实现SKIP m,实在不爽——虽然rank over(不过好像是sql2005才出现,效率好像也不低) ? RANK ( )????OVER ( [ < partition_by_clause > ] < order_by_clause > ) 如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名。例如,如果两位顶尖销售员具有同样的 SalesYTD 值,他们将并列第一。由于已有两行排名在前,所以具有下一个最大 SalesYTD 的销售人员将排名第三。因此,RANK 函数并不总返回连续整数。 用于整个查询的排序顺序决定了行在结果集中的显示顺序。这也隐含了行在每个分区中的排名。 USE AdventureWorks;
GO
SELECT i.ProductID,p.Name,i.LocationID,i.Quantity,RANK() OVER (PARTITION BY i.LocationID order by i.Quantity) as RANK
FROM Production.ProductInventory i JOIN Production.Product p
ON i.ProductID = p.ProductID
ORDER BY p.Name
GO
? 还有2个想而没有功能的: 1、对于sql的结果,在不知道字段名的情况下按顺序取 2、对于sql的结果,在不知道某字段名是否存在的情况下,条件选择 (如:如果存在fid则取max(fid)否则取max(第一个字段名)) 对于2,如果是固定的表或视图,好像可以通过系统表查到某字段名是否存在 但是如果是一个子查询,则不行 再补充: 2014增加了内存表,如果能在超出预定大小时,自动以非固定的内存补充,再不够以硬盘文件补充(也许已经这样了) sql语法增加并发提交多个查询的功能 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |