Сравнение двух таблиц для похожих значений и вставка значений - PullRequest
2 голосов
/ 30 декабря 2011

Я работаю над базами данных, и теперь мне нужны некоторые советы от вас, ребята ... У меня есть 2 таблицы с множеством строк и столбцов, и эти базы данных содержат адреса клиентов.Имена таблиц - «Данные, Заказы».

Теперь проблема заключается в том, что мне приходится искать адреса, присутствующие в Заказах таблиц, по адресам в данных, используя электронную почту в качестве критерия.Если в письмах есть совпадение, тогда все в порядке .... или же мы должны вставить адреса таблицы Orders в таблицу Data....

Я сделал этот запрос, но получаю ошибку.

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 Ответ

1 голос
/ 30 декабря 2011

Вы можете вставить значения непосредственно из оператора 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
    )

Кроме того, вы, вероятно, хотите указать столбцы в операторе выбора, просто чтобы убедиться, что правильные столбцы транспонированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...