I created a table with,

CREATE TABLE info (
    number INTEGER UNSIGNED,
    event INTEGER UNSIGNED,
    name VARCHAR(2000) NOT NULL,
    PRIMARY KEY (number, event)
);

and populated it with data to produce this,

+--------+-------+-------+
| number | event | name  |
+--------+-------+-------+
|     67 |     1 | Alice |
|     67 |     2 | Bob   |
|     69 |     1 | Carol |
|     70 |     1 | Alex  |
|     71 |     1 | David |
|     72 |     1 | Bob   |
|     72 |     2 | Alice |
|     72 |     3 | David |
+--------+-------+-------+

What I want to produce is a table with rows from the original with only
the maximum value of event for each corresponding number selected, like
this

+--------+------------+-------+
| number | event      | name  |
+--------+------------+-------+
|     67 |          2 | Bob   |
|     69 |          1 | Carol |
|     70 |          1 | Alex  |
|     71 |          1 | David |
|     72 |          3 | David |
+--------+------------+-------+

The closest I have managed to produce using GROUP BY is,

mysql> SELECT number, MAX(event), name FROM info GROUP BY number;
+--------+------------+-------+
| number | MAX(event) | name  |
+--------+------------+-------+
|     67 |          2 | Alice | <- should be Bob
|     69 |          1 | Carol |
|     70 |          1 | Alex  |
|     71 |          1 | David |
|     72 |          3 | Bob   | <- should be David
+--------+------------+-------+

I tried using a HAVING clause but got nowhere.

Can anybody help please ?

TTFN,

   Philip Riebold, [EMAIL PROTECTED]       /"\
   Media Services                            \ /
   University College London                  X  ASCII Ribbon Campaign
   Windeyer Building, 46 Cleveland Street    / \ Against HTML Mail
   London, W1T 4JF
   +44 (0)20 7679 9259 (switchboard), 09259 (internal)


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to