2013-04-01 4 views
0

У меня есть две таблицы users(идентификатор, имя пользователя, и т.д. ...) и user_contacts(ID, идентификатор пользователя, ContactID, и т.д ...).Вставьте недостающие записи из таблицы

Учитывая, что у меня есть user ж/идентификатор 84, что будет наиболее эффективным запросом для того, чтобы иметь недостающие записи, вставленные в user_contacts связать user 84 ж/все остальные пользователи?

+0

Этот вопрос непонятен. Вы хотите сказать, что хотите добавить всех пользователей в качестве контактов пользователя '84'? – plalx

+1

@plalx правильный. Я хочу, чтобы пользователь 84 был указан как контакт для всех пользователей. –

ответ

1

Учитывая самый последний комментарий, то это должно работать:

insert into user_contacts (userid, contactid) 
select u.id, 84 
from users u 
    left join user_contacts uc on u.id = uc.userid and uc.contactid = 84 
where uc.id is null 

Это будет вставить строку в таблицу user_contacts для каждого пользователя, который в настоящее время не имеет ряда с ContactID 84. Обязательно укажите ваши столбцы правильно.

В качестве альтернативы вы можете использовать NOT IN или NOT EXISTS. Например,

insert into user_contacts (userid, contactid) 
select u.id, 84 
from users u 
where u.id not in (
    select userid 
    from user_contacts 
    where contactid = 84) 
+0

Спасибо! Работает отлично и занимает около ~ .15 секунд, чтобы завершить –

+0

@KyleDecot - np, рад, что я мог бы помочь! – sgeddes

Смежные вопросы