select 字段序号,字段名,max(外键字段所在的表) as 外键字段所在的表,max(外键字段) as 外键字段,类型
from (SELECT distinct
字段序号=a.colorder ,
字段名=a.name ,
外键字段所在的表=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN object_name(tony.rkeyid) ELSE ''
END ,
外键字段=CASE WHEN tony.fkey is not null and tony.fkey=a.colid
THEN (SELECT name FROM syscolumns
WHERE colid=tony.fkey AND id=tony.fkeyid)
ELSE ''
END,
类型=b.name
FROM sys.syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
INNER JOIN sysobjects d ON a.id = d.id AND d.xtype = 'U' AND d.status >= 0
LEFT JOIN sysobjects htl ON htl.parent_obj=d.id AND htl.xtype='F'
LEFT JOIN sysforeignkeys tony on htl.id=tony.constid
WHERE d.name='Articles' ) as TB
group by 字段序号,字段名,类型