declare @t table(成绩 int,学生 varchar(10))
insert @t select
100,'小张' union select
70 ,'小力' union select
80 ,'小刚' union select
78 ,'小王'
select *,Pid = (select count(1) from @t where 成绩 > a.成绩)+1
from @t a
order by pid
/*
成绩 学生 Pid
----------- ---------- -----------
100 小张 1
80 小刚 2
78 小王 3
70 小力 4
(所影响的行数为 4 行)
*/
select *,dense_rank()over(order by IntegralTotal desc) from HT_Members
-- 1.SQL Server查询表的主外键
SELECT
外键表ID = b.fkeyid ,
外键表名称 = object_name(b.fkeyid) ,
外键列ID = b.fkey ,
外键列名 = (SELECT name FROM syscolumns WHERE colid = b.fkey AND id = b.fkeyid) ,
主键表ID = b.rkeyid ,
主键表名 = object_name(b.rkeyid) ,
主键列ID = b.rkey ,
主键列名 = (SELECT name FROM syscolumns WHERE colid = b.rkey AND id = b.rkeyid) ,
级联更新 = ObjectProperty(a.id,'CnstIsUpdateCascade') ,
级联删除 = ObjectProperty(a.id,'CnstIsDeleteCascade')
FROM sysobjects a
JOIN sysforeignkeys b ON a.id = b.constid
JOIN sysobjects c ON a.parent_obj = c.id
WHERE a.xtype = 'F' AND c.xtype = 'U'
-- 2.sql 语句查找外键 以及对应的外键表名、列名和引用的主表名、列名
;WITH CTE
AS (
SELECT OBJECT_NAME(constraint_object_id) Constraint_Name , OBJECT_NAME(parent_object_id) Table_Name , C.name Column_Name
FROM sys.foreign_key_columns FK
INNER JOIN sys.columns C
ON FK.parent_object_id = C.object_id
AND FK.parent_column_id = C.column_id
)
SELECT C.Constraint_Name , C.Table_Name , C.Column_Name , OBJECT_NAME(FK.referenced_object_id) Referenced_Table_Name , SC.name Referenced_Column_Name
FROM CTE C
INNER JOIN sys.foreign_key_columns FK
ON C.Constraint_Name = OBJECT_NAME(FK.constraint_object_id)
INNER JOIN sys.columns SC
ON FK.referenced_object_id = SC.object_id
AND FK.referenced_column_id = SC.column_id