"Casey Sheridan" <[EMAIL PROTECTED]> wrote:
> I have a table that has employee names, pay rates, and unique IDs. I want
> to select all of the distinct employee names, and if there are two employees
> with the same name, I want to be able to choose only one; the one with the
> highest pay rate. If there are two identical employee names with the same
> pay rate, I want to select the one that has the lowest unique ID number.
> Can anyone help me on how to write this query? Thanks!
If your version of MySQL supports subqueries (>=4.1.0):
SELECT name, pay_rate, MIN(id)
FROM table
WHERE (name, pay_rate) IN
(SELECT name, MAX(pay_rate) FROM table GROUP BY name)
GROUP BY name, pay_rate;
Otherwise you can't do it with one query. You can rewrite the above query using
temporary table and JOIN.
CREATE TEMPORARY TABLE tmp
SELECT name, MAX(pay_rate) pay_rate FROM table GROUP BY name;
SELECT table.name, table.pay_rate, MIN(table.id)
FROM table, tmp
WHERE table.name=tmp.name AND
table.pay_rate=tmp.pay_rate
GROUP BY table.name, table.pay_rate;
--
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.net http://www.ensita.net/
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Victoria Reznichenko
/ /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED]
/_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.net
<___/ www.mysql.com
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]