+ -
当前位置:首页 → 问答吧 → 求一条SQL语句

求一条SQL语句

时间:2011-12-12

来源:互联网

有一张表
SQL code

CREATE TABLE [dbo].[Bus_SysConfig]
(
    [ID] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL,
    [ConfigKey] [varchar](50) NOT NULL,
    [ConfigValue] [varchar](50) NOT NULL,
    [Remark] [varchar](50) NULL,
)



我通过ConfigKey 去查询记录,如果有多条记录则只留下第一条,其他的都删除掉。
方法很多,我想求一条简单的SQL 写法。
比如:对ConfigKey字段进行唯一性约束之类的这里就不讨论了。

我想要的格式大概是这样的:
SQL code

  declare @ifExist int;  select @ifExist=COUNT(*) from bus_sysconfig  where configkey='xxx'
if(@ifExist=0)
   --如果没有记录,则插入一条
  insert into bus_sysconfig(configkey,configValue) values('{0}','{1}')
 else if(@ifExist>=2)
    --如果有多条记录则删除多余的,只留其中一条。

作者: hua_chong_wei   发布时间: 2011-12-12

SQL code
;
WITH    tmp
          AS ( SELECT   px = ROW_NUMBER() OVER ( PARTITION BY [ConfigKey] ORDER BY GETDATE() )
               FROM     [dbo].[Bus_SysConfig]
             )
    DELETE  tmp
    WHERE   px > 1


比如:对ConfigKey字段进行唯一性约束之类的这里就不讨论了。

这个应该考虑下

作者: wufeng4552   发布时间: 2011-12-12

SQL code

Delete From Bus_SysConfig s Where Exists(Select 1 from Bus_SysConfig Where ConfigKey=S.ConfigKey And ID<S.ID)
--try

作者: mustudent   发布时间: 2011-12-12

SQL code
delete
 t 
from
 bus_sysconfig t 
where
 exists(select 1 from bus_sysconfig where configkey=t.configkey and configvalue>t.configvalue)

作者: fredrickhu   发布时间: 2011-12-12