Re: Updating table with max from another table
| От | Jean-Luc Lachance |
|---|---|
| Тема | Re: Updating table with max from another table |
| Дата | |
| Msg-id | 3DE3D293.99B0E6F8@nsd.ca обсуждение исходный текст |
| Ответ на | Updating table with max from another table ("Dan Winslow" <d.winslow@cox.net>) |
| Список | pgsql-general |
update a set maxtype = (select type from b where a.id = b.id order by val desc limit 1); Dan Winslow wrote: > > Well, I *thought* I knew my way around SQL a little bit, but I have been > beating my head on the following problem for a couple days now and I don't > have any idea where to turn next. If you could suggest any strategies or > places to look I would appreciate it very much. Thanks in advance. > > Given two table defs : > > create table a ( > id integer, > maxtype varchar(8) > ); > > create table b ( > id integer, > type varchar(8), > val integer > ); > > and data rows as follows: > > select * from a; > id | maxtype > ----+--------- > 1 | > 2 | > (2 rows) > > select * from b; > id | type | val > ----+-------+----- > 1 | type1 | 5 > 1 | type2 | 6 > 2 | type1 | 19 > 2 | type2 | 4 > (4 rows) > > And given the following task : > > update a from b such that a.maxtype is set equal to the b.type whose val > number is the highest for that matching id, that is, the result : > > select * from a; > id | maxtype > ----+--------- > 1 | type2 > 2 | type1 > (2 rows) > > is to be obtained, how can this be accomplished with SQL statements? I am > looking for a single (perhaps compound ) statement to do it, no procedural > stuff > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org
В списке pgsql-general по дате отправления: