2012-06-13 3 views
2

У меня есть SQL Выберите запрос с предложениями where. Например,Postgresql Выберите строки и столбец обновления

select * from table where status = 1 

И как я могу обновить один столбец с выбранными рядами одновременно при выборе? Я хочу отметить выбранные строки, чтобы избежать повторного выбора в следующем цикле. Что-то вроде:

select * from table where status = 1; update table set proc = 1 where id in (select id from table where status = 1) 

Но этот запрос не вернет результаты.

+1

Существует только один стол? BTW: не называйте таблицы 'table'; изобретать другие метасинтактические имена. – wildplasser

ответ

2

Используйте возвращение пункт:

update table 
    set proc = 1 
where id in (select id from table where status = 1) 
returning *; 

(Btw: Я предполагаю, что внутренний выбор на самом деле не выбрать из тех же таблиц, потому что тогда утверждение на самом деле не имеет смысла, так как это может быть переписано с простым where stauts = 1)

+0

спасибо, теперь понятно. – Tornike

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