求大神帮忙,去除SQL语句查询结果中的重复字段?描述一下遇到的问题:当Articles这个表中有一个外键字段的时
求大神帮忙,去除SQL语句查询结果中的重复字段?
描述一下遇到的问题:当Articles这个表中有一个外键字段的时候,不会出现结果重复字段的情况,当有两个外键字段的时候,就会出现每个字段重复两次,当有三个外键字段的时候,就会出现每个字段重复三次....
在代码中,添加了DISTINCT,但是还是有重复字段,不知道是怎么回事?求大神们帮忙看一下:
代码:
- SQL code
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.constidWHERE d.name='Articles' --这里输入包含表名称的条件
[解决办法]
LZ感觉是做表的自定义字段吧,以表来查询不会有重启的字段了?再加个表名两个字段组合主键就可以了
这样感觉表有点...
[解决办法]
- SQL code
SELECT 字段序号=a.column_id , 字段名=a.name , 外键字段所在的表=OBJECT_NAME(referenced_object_id), 外键字段=SC.name, SC.name, 类型=b.name FROM sys.columns a LEFT JOIN systypes b ON a.user_type_id = b.xusertype LEFT JOIN sys.foreign_key_columns FK ON FK.parent_object_id = a.object_id AND FK.parent_column_id = a.column_id LEFT JOIN sys.columns SC ON FK.referenced_object_id = SC.object_id AND FK.referenced_column_id = SC.column_id WHERE a.object_id=OBJECT_ID('tb') --这里输入包含表名称的条件
[解决办法]
如果你是05 或刚高版本就不要在使用
syscolumns systypes sysobjects 了
请用
sys.columns sys.types sys.objects
[解决办法]
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='TB_Details' ) as TB
group by 字段序号,字段名,类型
字段不存在 ,不能啊 。测试通过的 