<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://beardedmaker.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Informix_SQL</id>
		<title>Informix SQL - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://beardedmaker.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Informix_SQL"/>
		<link rel="alternate" type="text/html" href="https://beardedmaker.com/wiki/index.php?title=Informix_SQL&amp;action=history"/>
		<updated>2026-04-21T21:13:03Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>https://beardedmaker.com/wiki/index.php?title=Informix_SQL&amp;diff=2268&amp;oldid=prev</id>
		<title>Beard: /* Select One Row in a Group */</title>
		<link rel="alternate" type="text/html" href="https://beardedmaker.com/wiki/index.php?title=Informix_SQL&amp;diff=2268&amp;oldid=prev"/>
				<updated>2018-05-15T19:09:54Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Select One Row in a Group&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Select One Row in a Group ==&lt;br /&gt;
&lt;br /&gt;
let's say you have the following table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select groupid, name&lt;br /&gt;
  from user_table;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
groupid   name&lt;br /&gt;
---------------&lt;br /&gt;
1         fred&lt;br /&gt;
2         cindy&lt;br /&gt;
2         hanna&lt;br /&gt;
3         willy&lt;br /&gt;
3         pat&lt;br /&gt;
3         harry&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;b&amp;gt;Your goal:&amp;lt;/b&amp;gt;&amp;lt;/big&amp;gt; You want to select one member from each &amp;lt;b&amp;gt;groupid&amp;lt;/b&amp;gt; regardless of who it is, like this:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
groupid   name&lt;br /&gt;
---------------&lt;br /&gt;
1         fred&lt;br /&gt;
2         cindy&lt;br /&gt;
3         willy&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Informix, every row has a unique &amp;lt;b&amp;gt;rowid&amp;lt;/b&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select rowid, groupid, name&lt;br /&gt;
  from user_table&lt;br /&gt;
 order by rowid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
rowid   groupid   name&lt;br /&gt;
-----------------------&lt;br /&gt;
1       1         fred&lt;br /&gt;
2       2         cindy&lt;br /&gt;
3       2         hanna&lt;br /&gt;
4       3         willy&lt;br /&gt;
5       3         pat&lt;br /&gt;
6       3         harry&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So what you can do is select the minimum (or maximum) rowid to get only one row in a group by groupid:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select a.groupid, a.name&lt;br /&gt;
  from user_table a,&lt;br /&gt;
       (select min(rowid) rid, groupid&lt;br /&gt;
        from user_table&lt;br /&gt;
        group by groupid) b&lt;br /&gt;
where a.rowid = b.rid&lt;br /&gt;
order by a.groupid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This will give you the results you want.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Notice that I renamed &amp;lt;b&amp;gt;rowid&amp;lt;/b&amp;gt; in the subquery to &amp;lt;b&amp;gt;rid&amp;lt;/b&amp;gt;. If you don't do this you will get an error.&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now let's say we DO care about which row we select from each group. Maybe we want to select the oldest person. So with a table like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select groupid, name, dob&lt;br /&gt;
  from user_table;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
groupid   name   dob&lt;br /&gt;
---------------------------&lt;br /&gt;
1         fred   04/12/1986&lt;br /&gt;
2         cindy  12/22/1972&lt;br /&gt;
2         hanna  01/15/1983&lt;br /&gt;
3         willy  10/09/1977&lt;br /&gt;
3         pat    04/11/1980&lt;br /&gt;
3         harry  05/05/1959&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can add an &amp;lt;b&amp;gt;order by&amp;lt;/b&amp;gt; statement in the subquery. Just make sure you also add the &amp;lt;b&amp;gt;dob&amp;lt;/b&amp;gt; column to the &amp;lt;b&amp;gt;select&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;group by&amp;lt;/b&amp;gt; statements as well (in the subquery):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
select a.groupid, a.name&lt;br /&gt;
  from user_table a,&lt;br /&gt;
       (select min(rowid) rid, groupid, dob&lt;br /&gt;
        from user_table&lt;br /&gt;
        group by groupid, dob&lt;br /&gt;
        order by dob asc) b&lt;br /&gt;
where a.rowid = b.rid&lt;br /&gt;
order by a.groupid;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we only get the oldest person in each groupid:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
groupid   name   dob&lt;br /&gt;
---------------------------&lt;br /&gt;
1         fred   04/12/1986&lt;br /&gt;
2         cindy  12/22/1972&lt;br /&gt;
3         harry  05/05/1959&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Beard</name></author>	</entry>

	</feed>