根据指定字段排序编号(SQL Server 2005,Update,Order By)
在SQL Server 2005可以通过with as根据指定的字段排序编号,SQL语句如下:
(
SELECT 编号字段名, ROW_NUMBER() OVER(ORDER BY 排序字段名 DESC) AS RowNum
FROM 表名
)
Update 表1
SET 编号字段名=RowNum
应用场景:
在博客园社区中通过这样的SQL语句根据小组人气值对小组进行排名:
(
SELECT RankNum, ROW_NUMBER() OVER(ORDER BY 人气值 DESC) AS RowNum
FROM club_Groups
)
Update groups
SET RankNum=RowNum
如果只是一个排序字段,性能应该不是很大; 如果很多字段,性能会有影响.
向 这样的语句, 就要慎重考虑性能.
SELECT TOP 200
T1.TRADER_ID,
T3.APPROVAL_LTR_ST,
ROW_NUMBER() OVER(ORDER BY
CASE
WHEN @p_sort_expression = 'TRADER_REG_NO DESC' THEN
T1.TRADER_REG_NO END DESC,
CASE
WHEN @p_sort_expression = 'TRADER_NAME DESC' THEN
T1.TRADER_NAME END DESC,
CASE
WHEN @p_sort_expression = 'APPROVAL_LTR_ST DESC' THEN
T3.APPROVAL_LTR_ST END DESC,
) ROW_INDEX
FROM T_BC_ARS_TRADER T1,T_BC_ARS_REGISTRATION T2,T_BC_ARS_AGENT_LICENSE T3
WHERE (T1.TRADER_ID=T2.TRADER_ID)
AND (T1.TRADER_ST='A')
AND (CHARINDEX(@p_trader_reg_no,T1.TRADER_REG_NO)=1 OR @p_trader_reg_no IS NULL)
AND (CHARINDEX(@p_ref_no,T2.REF_NO)=1 OR @p_ref_no IS NULL)
AND (T2.REG_ID=T3.REG_ID)
我也是一个非常大项目性能测试的时候发现的.

浙公网安备 33010602011771号