就是当我每次登陆那个页面时,就都要查询一次,然后将查询出来的结果都添加到一个表中,,,但是当我每次登陆后,添加进表的数据不能重复。
例如:
查询的是 Customers(客户表):有CusID(编号),
添加进流失表,而且每次不能将Customers表中的重复数据添加进   CustomLosts(客户流失表): 有CLID(客户流失ID)、CusID(客户编号)
。 求指教啊!!!!!

解决方案 »

  1.   

    主键;唯一索引;或者添加前判断是否存在if exists(select 1 from tb where ...=...)
      

  2.   

    insert into 流失表 from (select CusID from Customers where month(data())-month(客户最后一次下单时间)>6)
    ???
      

  3.   

    INSERT INTO CustomLosts *
    SELECT * FROM Customers C
    WHERE NOT EXISTS (SELECT 1 FROM CustomLosts a WHERE C.CusID = A.CLID);
      

  4.   

    假设CustomLosts表的CLID字段是自增的,
    建议写个存储过程,代码大致如下:CREATE PROCEDURE [dbo].[InsertLostCustomerInfo] 
    @CusID VARCHAR(100)
    AS
    BEGIN
    SET NOCOUNT ON;    IF NOT EXISTS (
    SELECT TOP (1) *
    FROM [订单表] WITH(NOLOCK)
    WHERE CusID=@CusID
    AND [订单日期]>=DATEADD(MONTH,-6,GETDATE())
      )
    BEGIN
    IF NOT EXISTS (
    SELECT TOP (1) *
    FROM CustomLosts WITH(NOLOCK)
    WHERE CusID=@CusID
      )
    BEGIN
    INSERT INTO CustomLosts
    (
    CusID
    )
    SELECT @CusID
    END
    END
    END
    GO
      

  5.   

    7楼那个是单独一条客户信息的,如果你是要一次性把Customers表里满足条件的客户信息插入CustomLosts表,那就修改成:CREATE PROCEDURE [dbo].[InsertLostCustomerInfo] 
    @CusID VARCHAR(100)
    AS
    BEGIN
    SET NOCOUNT ON;

    SELECT CusID
    INTO #T1
    FROM [订单表] WITH(NOLOCK)
    GROUP BY CusID
    HAVING MAX([订单日期])<DATEADD(MONTH,-6,GETDATE())

    DELETE 
    FROM #T1
    FROM #T1 AS A 
    INNER JOIN CustomLosts AS B ON A.CusID=B.CusID

    INSERT INTO CustomLosts
    (
    CusID
    )
    SELECT CusID
    FROM #T1

    DROP TABLE #T1
    END
    GO