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

Откуда:
Сообщений: 740
Есть выборка документов по select нужно переделать в ubdate, что бы одно из полей заполнилось значением
Помогите пожалуйста: как колонку pars_povtor нужно проставить 8 цифру этим документам
Колонка pars_povtor находится в таблице link

SELECT
                `dd`.`id` AS `doc_id`, 
	l.*
FROM   `link` `l`
            LEFT JOIN `doc_data` `dd` ON dd.link_id = l.id AND dd.reestr_id = l.reestr_id
            LEFT JOIN `doc_ops_status` `dos` ON dos.id = dd.id
            WHERE
                l.reestr_id = 7
                AND (l.doc_html_file <> '' AND l.doc_html_file IS NOT NULL)
	AND dd.id IS NOT NULL
                AND dos.doc_updated <= l.parsed_date


картинка тут http://prntscr.com/c6bnu6
16 авг 16, 12:11    [19546439]     Ответить | Цитировать Сообщить модератору
 Re: Переделать select в update  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ольга Семенова,

судя по кавычкам это не тот форум, что вы исчите
16 авг 16, 12:19    [19546491]     Ответить | Цитировать Сообщить модератору
 Re: Переделать select в update  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
TaPaK,

автор
исчите
неожиданно...
16 авг 16, 12:20    [19546498]     Ответить | Цитировать Сообщить модератору
 Re: Переделать select в update  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 740
TaPaK, так вроде язык SQL в команде UPDATE одинаковый в плане синтаксиса

так будет правильно?

UPDATE l 
SET l.pars_povtor = 8
WHERE l.id IN 
(
SELECT
                `dd`.`id` AS `doc_id`, 
	l.*
FROM   `link` `l`
            LEFT JOIN `doc_data` `dd` ON dd.link_id = l.id AND dd.reestr_id = l.reestr_id
            LEFT JOIN `doc_ops_status` `dos` ON dos.id = dd.id
            WHERE
                l.reestr_id = 7
                AND (l.doc_html_file <> '' AND l.doc_html_file IS NOT NULL)
	AND dd.id IS NOT NULL
                AND dos.doc_updated <= l.parsed_date
)
16 авг 16, 12:23    [19546531]     Ответить | Цитировать Сообщить модератору
 Re: Переделать select в update  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ольга Семенова,

нет
UDPATE l
SET pars_povtor = 8
FROM   `link` `l`
            LEFT JOIN `doc_data` `dd` ON dd.link_id = l.id AND dd.reestr_id = l.reestr_id
            LEFT JOIN `doc_ops_status` `dos` ON dos.id = dd.id
            WHERE
                l.reestr_id = 7
                AND (l.doc_html_file <> '' AND l.doc_html_file IS NOT NULL)
	AND dd.id IS NOT NULL
                AND dos.doc_updated <= l.parsed_date
16 авг 16, 12:24    [19546542]     Ответить | Цитировать Сообщить модератору
 Re: Переделать select в update  [new]
o-o
Guest
Ольга Семенова
TaPaK, так вроде язык SQL в команде UPDATE одинаковый в плане синтаксиса

еще как разный, когда вы апдэйтите данныe в одной таблице
на основании данных из другой.
и джойновый синтаксис у вас не прокатит.
примерчик
SQL update from one Table to another based on a ID match
16 авг 16, 12:37    [19546648]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить