比较两个表的相似值和插入值

时间:2011-12-29 21:20:44

标签: sql sql-server-2008

我正在研究数据库,现在我需要你们的一些建议.. 我有2个包含许多行和列的表,这些数据库包含客户的地址。表的名称是数据,订单。

现在问题是我必须使用电子邮件中的地址作为条件搜索表订单中的地址。 如果电子邮件中有匹配则可以正常....或者我们应该在表格数据中插入表格订单的地址。 ...

我提出了这个问题,但我收到了一些错误。

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 个答案:

答案 0 :(得分: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语句中指定列,以确保转置正确的列。