-----Original Message----- From: pgsql-sql-ow...@postgresql.org [mailto:pgsql-sql-ow...@postgresql.org] On Behalf Of ssylla Sent: Wednesday, February 08, 2012 9:31 PM To: pgsql-sql@postgresql.org Subject: [SQL] update column with multiple values
Dear list, sorry, I already posted this, but it did not seem to have been accepted by the mailing list. So here's my second try: I need to update all rows of a column ('parent') based on a subquery that returns me the first four digits of another column ('id'): UPDATE admin SET parent=(SELECT SUBSTR(id,1,4) FROM admin); After executing, I get the following error-message: "more than one row returned by a subquery used as an expressionmore than one row returned by a subquery used as an expression" I am not quite sure about that, but maybe I need to construct a function/loop to fulfill this task? thanks for help. Stefan --------------------------------------------------------------- No sub-select required, just use the function: UPDATE admin SET parent = substr(id,1,4); This will, for each record, set the value of parent to the first four characters of its ID. When you use the sub-select there is not inherent linkage between the "UPDATE" table and the "FROM" table. You can make a correlated sub-query but in this case the is necessary. David J. -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql