1. 程式人生 > 其它 >Sql 常用語句

Sql 常用語句

--刪除重複資料   
--(重複全備份)
select att.* into RnsAttachmentsDeleteAllBack0810 from RnsAttachments att
inner join                              
(select t.ForeignId,t.ProjectForeignId from RnsAttachments t
where t.ProjectForeignId is not null
group by t.ForeignId,t.ProjectForeignId having count(1)>1) tt
on
att.ForeignId= tt.ForeignId and att.ProjectForeignId = tt.ProjectForeignId; --重複資料只留一條 select ProjectForeignId,ForeignId,max(Id)maxid into RnsAttachmentsNotDeleteId from RnsAttachmentsDeleteAllBack0810 group by ProjectForeignId,ForeignId ; --刪除不留下來的資料。 delete del from RnsAttachments del inner join
RnsAttachmentsDeleteAllBack0810 Delsearch on del.id=Delsearch.id left join RnsAttachmentsNotDeleteId noDel on del.id=noDel.maxid where noDel.maxid is null;
處理重複資料
SELECT  ( CASE WHEN a.colorder = 1 THEN d.name
               ELSE ''
          END ) AS 表名 ,--如果表名相同就返回空  
        a.colorder AS 欄位序號 ,
        a.name 
AS 欄位名 , ( CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '' ELSE '' END ) AS 標識 , ( CASE WHEN ( SELECT COUNT(*) FROM sysobjects--查詢主鍵 WHERE ( name IN ( SELECT name FROM sysindexes WHERE ( id = a.id ) AND ( indid IN ( SELECT indid FROM sysindexkeys WHERE ( id = a.id ) AND ( colid IN ( SELECT colid FROM syscolumns WHERE ( id = a.id ) AND ( name = a.name ) ) ) ) ) ) ) AND ( xtype = 'PK' ) ) > 0 THEN '' ELSE '' END ) AS 主鍵 ,--查詢主鍵END b.name AS 型別 , a.length AS 佔用位元組數 , COLUMNPROPERTY(a.id, a.name, 'PRECISION') AS 長度 , ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位數 , ( CASE WHEN a.isnullable = 1 THEN '' ELSE '' END ) AS 允許空 , ISNULL(e.text, '') AS 預設值 , ISNULL(g.[value], '') AS 欄位說明 FROM 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.name <> 'dtproperties' LEFT JOIN syscomments e ON a.cdefault = e.id LEFT JOIN sys.extended_properties g ON a.id = g.major_id AND a.colid = g.minor_id where d.name in('RnsEmployees','RnsProjects','RnsProjectRelatives','RnsProjectCompanyRelatives','RnsCompanies','RnsJobMapping') ORDER BY a.id , a.colorder;
表字段說明
        select 
  ROW_NUMBER() OVER (ORDER BY a.object_id) AS No, 
  a.name AS 表名,
  isnull(g.[value],'-') AS 說明
from
  sys.tables a left join sys.extended_properties g
  on (a.object_id = g.major_id AND g.minor_id = 0);
表說明
--增加表說明
EXECUTE sp_addextendedproperty   N'MS_Description','表說明',N'user',N'dbo',N'table',N'表名',NULL,NULL
EXECUTE sp_updateextendedproperty N'MS_Description','專案型別',N'user',N'dbo',N'table',N'ProjectType',NULL,NULL;

--增加欄位
ALTER TABLE 表名 ADD    欄位名 int not NULL default 8;
--增加欄位註釋
EXEC sp_addextendedproperty 'MS_Description', '規格型號日誌id22', 'SCHEMA', dbo, 'table', LOG_REV_SPEC, 'column', logid;
--修改欄位註釋
EXEC sp_addextendedproperty 'MS_Description', '規格型號日誌id22', 'SCHEMA', dbo, 'table', LOG_REV_SPEC, 'column', logid;
表結構修改