================================================================================ update one field ================================================================================ update items set foo = 'bar'; -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (update_value (string))))) ================================================================================ alias ================================================================================ update items as t set foo = 'bar'; -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (identifier) (update_set (identifier) (update_value (string))))) ================================================================================ update many fields ================================================================================ update t set col1 = val1, col2 = default returning foo, *; -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (update_value (identifier))) (update_set (identifier) (update_value)) (returning (select_item (identifier)) (select_item (star))))) ================================================================================ update many fields(1) ================================================================================ update t set (col1, col2) = (val1, val2); -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (identifier) (update_value (identifier)) (update_value (identifier))))) ================================================================================ update where ================================================================================ update t set foo = bar where column1 = 'magic'; -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (update_value (identifier))) (where_filter (op_expression (identifier) (comparison_op) (string))))) ================================================================================ update where subselect ================================================================================ UPDATE t SET a = b + 1 WHERE id = (SELECT foo FROM bar WHERE c = 'd'); -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (update_value (op_expression (identifier) (number)))) (where_filter (op_expression (identifier) (comparison_op) (select_statement (select_item (identifier)) (select_from (from_item (from_table (identifier)))) (select_where (where_filter (op_expression (identifier) (comparison_op) (string))))))))) ================================================================================ update from ================================================================================ UPDATE foo SET bar = bar + 1 FROM t WHERE b = 'z'; -------------------------------------------------------------------------------- (source_file (update_statement (identifier) (update_set (identifier) (update_value (op_expression (identifier) (number)))) (from_item (from_table (identifier))) (where_filter (op_expression (identifier) (comparison_op) (string))))) ================================================================================ with cte ================================================================================ with foo as (select * from bar) update foo set bar = 1; -------------------------------------------------------------------------------- (source_file (update_statement (with_query (with_query_item (identifier) (select_statement (select_item (star)) (select_from (from_item (from_table (identifier))))))) (identifier) (update_set (identifier) (update_value (number)))))