Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 UPDATE ненужных записей  [new]
one706
Member

Откуда:
Сообщений: 99
Хочу в табл.-справочнике пометить как удаленные записи, которые не участвуют в итоговой таблице. Т.е. это просто накопившийся мусор.

Подскажи пожалуйста как составить запрос на обновление таблицы.
Есть:
1.табл.CUSTOMER с полями
ID, ..., Trash

2.табл.HISTORY с полями
ID, CodID_Customer, ...

и связь Customer.ID --> History.CodID_Customer

Мне нужно в табл.CUSTOMER полю Trash присвоить 1 (единицу) для тех записей, которые отсутствуют в табл.HISTORY
Что-то типа
UPDATE Customer
SET Trash = 1
WHERE ID ...(а тут выборка записей которые не упоминается в табл.History)
14 фев 06, 15:43    [2355060]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
например:
...
where
  not exists(select top 1 1 from HISTORY where HISTORY.CodID_Customer = Customer.ID)
14 фев 06, 15:51    [2355117]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
UPDATE C
  SET Trash = 1
FROM
  Customer C
WHERE
  NOT EXISTS (SELECT * FROM HISTORY WHERE ID = C.ID)
14 фев 06, 15:51    [2355118]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
one706
Member

Откуда:
Сообщений: 99
применил оба метода
-----------
запрос
SELECT C.ID, H.CodID_Customer, C.Trash
from Customer C
left outer join History H ON C.id = H.CodID_Customer
where (not exists (select ID from Customer where ID = H.CodID_Customer ))
возвращает 4536 строк
--------------
UPDATE Customer
SET Trash = 1
where not exists(select top 1 1 from HISTORY where HISTORY.CodID_Customer = Customer.ID)
возвращает "ответ" - (4536 row(s) affected)
---------------
UPDATE C
SET Trash = 1
FROM
Customer C
WHERE
NOT EXISTS (SELECT * FROM HISTORY WHERE ID = C.ID)
возвращает "ответ" - (21208 row(s) affected)
-------------
Кто прав ?
14 фев 06, 16:13    [2355281]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
злой шаман
Member

Откуда: Питер
Сообщений: 1253
А подумать?
14 фев 06, 16:19    [2355333]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
one706
Member

Откуда:
Сообщений: 99
тоже можно
14 фев 06, 16:26    [2355369]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE ненужных записей  [new]
one706
Member

Откуда:
Сообщений: 99
daw снова спасибо. Проапдейтился.
14 фев 06, 16:58    [2355526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить