2011-12-29 64 views
2

我正在处理数据库,现在我需要一些建议来自你们.. 我有2个表有很多行和列,这些数据库包含客户的地址。表格的名称是数据,订单。比较两个表的相似值和插入值

现在的问题是我必须使用电子邮件数据中的地址作为条件来搜索表格中的地址。 如果在电子邮件中有匹配,那么它就ok ....或者我们应该在表数据中插入表Orders的地址。 ...

我做了这个查询,但我得到一些错误。

INSERT INTO orders (orders_id, customers_id, customers_cid, customers_vat_id, customers_name, customers_email_address) VALUES((select o.* from Test.dbo.orders o where o.customers_email_address not in (select a.email0 from CobraDemoData.dbo.Data a))) 

任何帮助深表感谢.. 谢谢, subash

+1

你的错误是什么? – diagonalbatman 2011-12-29 21:22:51

回答

1

您可以直接从一个select语句插入值 - 当你想这样做,请勿使用values。此外,您可以使用not exists代替not in,因为SQL Server通常运行速度要快得多,但这是个例,因此如果问题真的存在,您可以查看查询计划。

insert into orders (orders_id, customers_id, customers_cid, customers_vat_id, customers_name, customers_email_address) 
select 
    o.* 
from 
    Test.dbo.orders o 
where 
    not exists (
     select 1 
     from 
      CobraDemoData.dbo.Data a 
     where 
      a.email0 = o.customers_email_address 
    ) 

另外,您可能希望在select语句中指定列,以确保正确的列被移位。

+0

非常感谢你它工作正常..... – Subash 2011-12-29 21:43:56