2013-04-09 119 views
1

我有以下SQL。我试图将ClientNameClients插入CommisionPickupspName列。我需要确保所有的值都是唯一的。将一个表中的值插入另一个表中

insert into CommisionPickups (pName) 
    (select ClientName 
    from Clients 
    where ClientName <> CommisionPickups.pName) 

回答

5

您不能使用<>来检查唯一性。为确保所有名称都是唯一的,您需要确保从CommisionPickups中选择唯一名称,并且您插入的名称不存在于Clients中。使用NOT EXISTSCommisionPickups,并DISTINCTClients,像这样:

insert into CommisionPickups (pName) 
(select DISTINCT c.ClientName from Clients c 
where NOT EXISTS (SELECT 1 FROM CommisionPickups cp 
        WHERE c.ClientName = cp.pName) 
) 
1

我不能够得到您的问题,但我理解部分可能是你问的这个

如果要插入在遥远的价值PNAME不是让PNAME独一无二它会自动工作 并选择

select DISTINCT ClientName from Clients 

看看这个U可以得到

http://www.w3schools.com/sql/sql_select_into.asp

+0

我需要从CLIENTNAME字段从客户表,该表是不是已经在PNAME田野上CommisionPickups表复制所有工作日期。您建议的方式只会从客户表中选择唯一或不同的值。 – w3n2u 2013-04-09 10:50:20

1

这里是实现它的一种方法。我在SQL Server的工作,但我希望它会为任何数据库引擎

INSERT INTO CommisionPickups (pName) 
    SELECT DISTINCT 
      ClientName 
    FROM Client 
    WHERE ClientName NOT IN (SELECT DISTINCT 
             pName 
           FROM CommisionPickups) 
相关问题